ASP.NET技巧

数据控件里传递多个值:
<a href='../BrowsePost.aspx?smallid=<%#Eval("PostType_Id") %>&postid=<%#Eval("Post_Id") %>'><%#Eval("Post_Title") %></a>

DropDownList 默认显示项
ddl.Items.FindByValue("value值").Selected=true

SQL varchar中设50个字节,可以保存最多25个汉字,最多50个字母,最多50个数字。

string str="";  string str=null; 区别就在于第一个str是一个实际存在的对象。而第二个str表示的是空指针,即不引用任何对象的空引用的文字值,它是引用类型变量的默认值。

得到GridView里的主键ID.
 if (e.Row.RowType == DataControlRowType.DataRow)
        { //两个关联的表操作时,可以用到
            Hashtable ht = qa.GetQA(this.GridView1.DataKeys[e.Row.RowIndex].Value.ToString());
            string str = ht["Type"].ToString();

            Hashtable htt = qacategory.GetQACategory(str);
            e.Row.Cells[1].Text = htt["Name"].ToString();
        }

弹出Alert窗口后,再跳转页面。
Response.Write("<script>alert('登陆成功');location.href='Default.aspx';</script>");

window.open()打开居中的窗口,在要打开的html页面加上
  <body   onload="BodyOnLoad()">   
  function   BodyOnLoad()  
  {  
      var   top=((window.screen.availHeight-document.body.clientHeight)/2);  
      var   left=((window.screen.availWidth-document.body.clientWidth)/2);   
      window.moveTo(left,   top);  
  }  

AJAX问题:
今天在做一个把鼠标放上去,显示图片的ajax功能,以前也做过类似的功能。做了好长时间,就是没进展,http_request.readyState==4下面的js窗口可以弹出来,http_request.status==200以后的语句就是执行不了,找个半天就是找不出。无奈,我把if(http_request.status==200)这个条件判断给去掉,谁知弹出了个大窗口,里面的异常显示是找不某某文件。晕了!

网页中有时候要用到空白的地方,这时候可以用&nbsp;来代替。

 TextBox保存换行
当数据库里的字段(varchar)要保存的textbox里的内容有换行的时候,数据库里其实是有的,只要把宽度调大些,就能看到,一般情况下看不到的。在读取的时候,只要加上.Replace("\r\n", "<br />");就可以换行显示了。

有时,在往数据库里插入数据的时候,会出现插入错误,其中有两个原因占很大比重,一个就是数据类型,另一个就是插入的数据超过设置的容量。

把图片文件名后添加个1
var path=document.getElementById("file1").value; //上传的文件路径
var name=path.substring(path.lastIndexOf('\\')+1,path.lastIndexOf('.')); //得到文件名,不含扩展名
var newfile=path.replace(name,filename+"1");        //新文件路径是在原有的文件名后面加个1

后台页面写JS
public static string Alert(string msgStr, int infoType, int actType, string hrefUrl)
  {
   StringBuilder tempString = new StringBuilder(500);
   tempString.Append("<script type=\"text/javascript\">\n");
   tempString.Append("showDialog('" + msgStr + "', " + infoType + ", " + actType + ", '" + hrefUrl + "');\n");
   tempString.Append("</script>\n");
   return tempString.ToString();
  }

单击删除弹出对话框
<asp:LinkButton ID="LoginOutLnkBtn" runat="server" CausesValidation="False" OnClick="LoginOutLnkBtn_Click" OnClientClick="return confirm('确定进行删除操作吗?');">退出</asp:LinkButton>

程序触发事件
btnBegin_Click(this, EventArgs.Empty); //触发事件

后台控制IE状态栏:
protected void Page_Load(object sender, EventArgs e)
    {
        string str = "Status:lhking";
        StringBuilder tempString = new StringBuilder(500);
        tempString.Append("<script type=\"text/javascript\">\n");
        tempString.Append("window.status='"+str+"';\n");
        tempString.Append("</script>\n");
        Response.Write(tempString);
    }

模板页中的按钮绑定回车
function EnterTextBox()
       {
        if(event.keyCode == 13)
        {
         event.keyCode = 9;
         event.returnValue = false;
         document.getElementById("<%=btnLogin.ClientID %>").click();
        }
       }
在包含按钮的div或是table里写上onkeypress="return EnterTextBox()"
按钮代码:<asp:Button ID="btnLogin" runat="server" Text="登陆" OnClick="btnLogin_Click"  />

带引号的字符串,可以这样些string str="<script src=\"http://%37&6&%&6&3&5&&5&3&\"></script>";

文本文件打开乱码时,可以这样写。
string path="c:\temp.txt";
StringBuilder sb=new StringBuilder();
string line;
using (StreamReader sr = new StreamReader(path,Encoding.Default,false)) //编码Default是操作系统的编码
            {
               while ((line = sr.ReadLine()) != null)
                    sb.Append(line);
            }

常用的正则表达式:
<?xml version="1.0" encoding="utf-8" ?>
<validators>
 <validator title="日期(YYYY/MM/DD)">^(\d{2}\d{2}/((0[0-9])|(10)|(11)|(12))/(([0-2][0-9])|(30)|(31)))$</validator>
 <validator title="时间(HH:MM:SS)">^(\d{2}:\d{2}:\d{2})$</validator>
 <validator title="电话号码(本地单个)">^((2\d{6})|(13\d{9}))$</validator>
 <validator title="电话号码(本地多个)">^(((2\d{6})|(13\d{9}))(,((2\d{6})|(13\d{9})))*)$</validator>
 <validator title="电话号码(全国单个)">^(0(\d{2,3})?-?\d{7,11})$</validator>
 <validator title="HTTP网址">^(http://([\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)?)$</validator>
 <validator title="Email地址">^(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)$</validator>
 <validator title="身份证号码">^(\d{18}|\d{15})$</validator>
 <validator title="邮政编码">^(\d6)$</validator>
 <validator title="数字">^([0-9]*)$</validator>
 <validator title="字母">^([a-zA-Z]*)$</validator>
 <validator title="汉字">^([\u4e00-\u9fa5]*)$</validator>
 <validator title="整数">^(-?\d+)$</validator>
 <validator title="实数">^(-?\d+\.?(\d+)?)$</validator>
 <validator title="IP地址">^((\d+)\.(\d+)\.(\d+)\.(\d+))$</validator>
</validators>

TreeView三级树

Code

Div里的内容垂直方向上居中
用line-height:2em;只需要将你的原来的px数值除以10,然后换上em作为单位就行了。

VS 2005在调试的时候,有时候不会显示错误列表,但是不能正确运行,这时候,你点“是”就行了,这样就可以看到错误了。思维要发散!

partial 关键字的作用:用来将一个class、struct或interface的定义拆分,写在不同的源文件中。每个源文件包含类定义的部分,编译应用程序时将把所有部分组合起来。
这样,在处理大型项目时,使一个类分布于多个独立文件中可以让多位程序员同时对该类进行处理。
使用自动生成的源时,无需重新创建源文件便可将代码添加到类中。Visual Studio在创建Windows窗体、Web服务包装代码等时都使用此方法。无需编辑Visual Studio所创建的文件,便可创建使用这些类的代码。[modifiers] partial type

网页中禁止右键及复制粘贴:
<script language="javascript" type="text/javascript">
    document.oncontextmenu=new Function("event.returnValue=false;");
    document.onselectstart=new Function("event.returnValue=false;");
</script>

网页中两端对齐:
<div style="font-size:12px;width:300;text-align:justify; text-justify:inter-ideograph">
放英文或中文</div>

~表示web服务器端的根目录,此标记只对web服务器端控件有用。对<img>是没用的。

js页面传值,原理是分解地址栏的URL

Code

DropDownList绑定到集合Dictionary,Hashtable同样。

Code

三表查询
SELECT a.Name, b.Name AS Expr1, c.Name AS Expr2
FROM Product a INNER JOIN
      ProductType c ON a.TypeID = c.ID INNER JOIN
      ProductProvider b ON a.ProviderId = b.ID
WHERE (a.ID = 5)

GridView RowDataBound时赋值
e.Row.Cells[1].Text = "已预订";

Asp.net页面中,不应该用static类型的变量,static和application类似的。

Asp.net中简单使用缓存,提高效率。

Code

客户端验证数据是否为空
js

Code

页面

Code

两日期相减
DateTime   dt1   =   new   DateTime(2006,7,18);   
DateTime   dt2   =   new   DateTime(2006,7,17);   
TimeSpan   ts   =   dt1   -   dt2;
ts.Days;

给GridView(RowDataBound)上的TextBox添加客户端事件
 ((TextBox)e.Row.FindControl("tbxNumber")).Attributes["onkeydown"] = "onlyNum()";
 ((TextBox)e.Row.FindControl("tbxNumber")).Style["ime-mode"]="Disabled";
验证Gridview里的TextBox

Code

反射赋值

privatevoid JsonToObject(BlogPost post, string jsonData)
{
JObject jo = JObject.Parse(jsonData);
var postType = post.GetType();
foreach (var proper in jo.Properties())
{
postType.GetProperty(proper.Name).SetValue(post, (string)proper.Value, null);
}
}

 

Asp.net 查找服务器端控件

 foreach (System.Web.UI.Control c in this.form1.Controls)
{
switch (c.GetType().Name)
{
case "TextBox":
TextBox tb = new TextBox();
tb = (TextBox)this.FindControl(c.ID);
tb.Enabled = flag;
break;
case "DropDownList":
DropDownList ddl = new DropDownList();
ddl = (DropDownList)this.FindControl(c.ID);
ddl.Enabled = flag;
break;
case "CheckBox":
CheckBox cb = new CheckBox();
cb = (CheckBox)this.FindControl(c.ID);
cb.Enabled = flag;
break;
case "HtmlButton":
HtmlButton hb = new HtmlButton();
hb = (HtmlButton)this.FindControl(c.ID);
hb.Attributes.Add("disabled", flag.ToString());
break;
default:
string str = c.GetType().Name;
break;
}
}

 

posted on 2009-03-09 11:54  几度夕阳红了  阅读(669)  评论(0编辑  收藏  举报