一、用JQuery的Ajax加載XML並解析的注意事項
1、Content-Type
很多時候無法解析就是Content-Type的問題。如果本身就是XML文件,請跳過這一步。
動態生成的XML一定要將其設置爲text/xml,否則默認就是text/html也就是普通的文本。 常見語言的Content-Type設置:
response.setHeader("ContentType","text/xml"); //jsp
response.ContentType= "text/xml"; //asp
header("Content-Type:text/xml"); //php
2、xml結構
XML一定要封閉的,很重要的!
<?xml version="1.0" encoding="UTF-8"?> <stulist> <student email="1"> <name>zhangsan</name> <id>1</id> </student> <student email="2"> <name>lisi</name> <id>2</id> </student> </stulist>
3、解析(使用 jQuery 在瀏覽器中處理 XML)
$.ajax({ async: true, // 默認true(異步請求) cache: true, // 默認true,設置爲 false 將不會從瀏覽器緩存中加載請求信息。 type: "GET", // 默認:GET 請求方式:[POST/GET] dataType: "xml", //默認["xml"/"html"] 返回數據類型:["xml" / "html" / "script" / "json" / "jsonp"] url: "HomePageData/FlashResRecommend.xml", // 默認當前地址,發送請求的地址 error: function(xml) { alert('加載數據出現錯誤'); }, // 請求失敗時調用 timeout: 10000, // 設置請求超時時間 success: function(xml) { // 請求成功後回調函數 參數:服務器返回數據,數據格式.$(xml).find("student[email='1']").size();//可以獲取屬性爲1的個數xml.documentElement.childNodes.length;//可以獲取屬性爲1的個數 $(xml).find("News[Status='1']").each(function(i) {var Title = $(this).children("name").text(); //去對象的文本var email = $(this).attr("email");//取屬性});}});
更多可以參考ibm文章:使用 jQuery 在瀏覽器中處理 XML
http://www.ibm.com/developerworks/cn/xml/x-feedjquery/
二、Asp.net後臺綁定xml並進行分頁
<asp:Repeater ID="rptResType2" runat="server" > <HeaderTemplate><div class="mycontent"> <div class="mycontent100"> </HeaderTemplate> <ItemTemplate> <div class="jiansje story"> <div style="width:100%;" class="title"><a target="_self" href="#" mce_href="#" style="font-size:1.20em ;" mce_style="font-size:1.20em ;"> <%#XPath("Field[@name='Title']", 0, "")%></a></div> <div class="sub-title" style="width:100%; "><span class="source" ><b><%#XPath("Field[@name='Year']", 0, "")%></b></span></div> <div class="body"><div class="snippet"><%#XPath("Field[@name='Content']", 0, "")%> </div></div><div class="r"></div></div> </ItemTemplate> <FooterTemplate> </div></div> </FooterTemplate> </asp:Repeater> /// <summary> /// 綁定數據 /// </summary> /// <param name="strResType">資源類型</param> /// <param name="strFileUrl">文件地址</param> public void BindData(string strResType, string strFileUrl) { //綁定推薦 this.XmlDataSource1.DataFile = strFileUrl; //--------------- //獲取總數分頁 //綁定翻頁 --------------- int nRecordCount= this.XmlDataSource1.GetXmlDocument().GetElementsByTagName("Record").Count;//總數 int nPageSize = 20;//每頁顯示 int nItemCount=6; // 頁碼翻頁顯示數 if (null!=ViewData["CurPage"]) nCurPage = Convert.ToInt32(ViewData["CurPage"]); if (nCurPage < 1) nCurPage = 1; int StatPage = (nCurPage - 1) * nPageSize; int EndPage = StatPage + nPageSize; ArticleTransformer trans = new ArticleTransformer(); this.XmlDSPage.Data = trans.GetPageControl(nRecordCount, nPageSize, nItemCount, nCurPage); this.XmlDSPage.XPath = "/Result/pagecontrol/page"; this.rptPage.DataSource = this.XmlDSPage; this.rptPage.DataBind(); //如果頁面的數量爲1,隱藏 if (this.rptPage.Items.Count < 2) rptPage.Visible = false; //--------------- //綁定翻頁 ------------------------ //綁定記錄 if ("1".Equals(strResType)) { } else { } this.XmlDataSource1.XPath = "/Result/Records/Record[ " + StatPage + " <position() and position()<=" + EndPage + "]"; string strRepeater = "rptResType" + strResType; try { //得到當前要顯示的 repeater Repeater rpt = (Repeater)this.FindControl(strRepeater); this.rptItems.HeaderTemplate = rpt.HeaderTemplate; this.rptItems.ItemTemplate = rpt.ItemTemplate; this.rptItems.FooterTemplate = rpt.FooterTemplate; this.rptItems.DataSource = this.XmlDataSource1; this.rptItems.DataBind(); } catch (Exception exp) { Log log = new Log(); log.WriteLog("綁定個性化更多列表:" + exp.Message + strFileUrl); } }
三、xml導入dataset分頁
string strKeyWord = string.Empty; string strExpr = "(Status='1' or Status='2') "; string strSort = "ID DESC"; if (Session["txtSearchWord"] != null) { strKeyWord = Session["txtSearchWord"].ToString(); if (!string.IsNullOrEmpty(strKeyWord)) strExpr = string.Format("{0} And (ResGroupName like '%{1}%' )", strExpr, strKeyWord); } // Response.Write(strExpr); //XmlDSList.DataFile = strXmlRoad; //XmlDSList.XPath = ("Subjects/Subject[@Status='1']"); DataSet objDataSet = new DataSet(); objDataSet.ReadXml(strXmlRoad); // Sort descending by column named CompanyName. // Use the Select method to find all rows matching the filter. DataRow[] foundRows = objDataSet.Tables[0].Select(strExpr, strSort, DataViewRowState.Added); //foreach (DataRow r in foundRows) //{ // foreach (DataColumn c in r.Table.Columns) // { // Response.Write(string.Format("/t {0}", r[c])); // } // Response.Write("<br>"); //}
四、datagridview 綁定數組
<%# DataBinder.Eval(Container, "DataItem.ItemArray[1]", null)%>
以下爲參考:
<@% DataBinder.Eval(Container.DataItem, "ColumnName") %>
<@% DataBinder.Eval(Container.DataItem, "ColumnName", null) %>
<@% DataBinder.Eval(Container, "DataItem.ColumnName", null) %>
<@% ((DataRowView)Container.DataItem)["ColumnName"] %>
<@% ((DataRowView)Container.DataItem).Row["ColumnName"] %>
更多:http://hi.baidu.com/dongtso/blog/item/d511be8f754ee0e9f01f3695.html
五: 導入excel到datasset的時候,應當注意去掉空格
string strFilePath = "E://ProjectTest//chartest//aa.xlsx"; string strConn; if (strFilePath.ToLower().Contains(".xlsx")) strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR=NO;IMEX=1;'", strFilePath); else strConn = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=NO;IMEX=1;'", strFilePath); OleDbConnection conn = new OleDbConnection(strConn); OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet1$] Where f1<>'' And f1 is no null ", strConn); DataSet myDataSet = new DataSet(); try { myCommand.Fill(myDataSet); } catch (Exception e) { string strError = e.Message; return null; }
當然,可以根據列名字過濾, srtSql = "SELECT " + strColumnName + " FROM [Sheet1$] where " + strColumnName + "<>'' ";如果沒有列名字的話,估計只能採取以上方法了,默認的列名爲f1,f2等
如果限制了條數,可以直接根據行列操作:“elect * from [sheet1$A2:C4]”
六用正則表達式限制文本框只能輸入數字,小數點,英文字母,漢字等各類代碼
2007-11-11 10:30
1.文本框只能輸入數字代碼(小數點也不能輸入)
<input οnkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">
2.只能輸入數字,能輸小數點.
<input οnkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')">
<input name=txt1 οnchange="if(/\D/.test(this.value)){alert('只能輸入數字');this.value='';}">
3.數字和小數點方法二
<input type=text t_value="" o_value="" οnkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" οnkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" οnblur="if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))this.value=this.o_value;else{if(this.value.match(/^\.\d+$/))this.value=0+this.value;if(this.value.match(/^\.$/))this.value=0;this.o_value=this.value}">
4.只能輸入字母和漢字
<input οnkeyup="value=value.replace(/[\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[\d]/g,''))" maxlength=10 name="Numbers">
5.只能輸入英文字母和數字,不能輸入中文
<input οnkeyup="value=value.replace(/[^\w\.\/]/ig,'')">
6.只能輸入數字和英文<font color="Red">chun</font>
<input onKeyUp="value=value.replace(/[^\d|chun]/g,'')">
7.小數點後只能有最多兩位(數字,中文都可輸入),不能輸入字母和運算符號:
<input onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 || /\.\d\d$/.test(value))event.returnValue=false">
8.小數點後只能有最多兩位(數字,字母,中文都可輸入),可以輸入運算符號:
<input οnkeyup="this.value=this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')">