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')">

 

 

 

 

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