asp.net 等開發中可能會用到的- 不斷更新


一、用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')">

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章