ASP.NET技巧[转]
1、数据控件里传递多个值:
<a href='../BrowsePost.aspx?smallid=<%#Eval("PostType_Id") %>&postid=<%#Eval("Post_Id") %>'><%#Eval("Post_Title") %></a>
2、DropDownList 默认显示项
ddl.Items.FindByValue("value值").Selected=true
3、SQL varchar中设50个字节,可以保存最多25个汉字,最多50个字母,最多50个数字。
4、string str=""; string str=null; 区别就在于第一个str是一个实际存在的对象。而第二个str表示的是空指针,即不引用任何对象的空引用的文字值,它是引用类型变量的默认值。
5、得到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();
}
6、弹出Alert窗口后,再跳转页面。
Response.Write("<script>alert('登陆成功');location.href='Default.aspx';</script>");
7、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);
}
8、AJAX问题:
今天在做一个把鼠标放上去,显示图片的ajax功能,以前也做过类似的功能。做了好长时间,就是没进展,http_request.readyState==4下面的js窗口可以弹出来,http_request.status==200以后的语句就是执行不了,找个半天就是找不出。无奈,我把if(http_request.status==200)这个条件判断给去掉,谁知弹出了个大窗口,里面的异常显示是找不某某文件。晕了!
9、网页中有时候要用到空白的地方,这时候可以用 来代替。
10、TextBox保存换行
当数据库里的字段(varchar)要保存的textbox里的内容有换行的时候,数据库里其实是有的,只要把宽度调大些,就能看到,一般情况下看不到的。在读取的时候,只要加上.Replace("\r\n", "<br />");就可以换行显示了。
有时,在往数据库里插入数据的时候,会出现插入错误,其中有两个原因占很大比重,一个就是数据类型,另一个就是插入的数据超过设置的容量。
11、把图片文件名后添加个1
var path=document.getElementById("file1").value; //上传的文件路径
var name=path.substring(path.lastIndexOf('\\')+1,path.lastIndexOf('.')); //得到文件名,不含扩展名
var newfile=path.replace(name,filename+"1"); //新文件路径是在原有的文件名后面加个1
12、后台页面写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();
}
13、单击删除弹出对话框
<asp:LinkButton ID="LoginOutLnkBtn" runat="server" CausesValidation="False" OnClick="LoginOutLnkBtn_Click" OnClientClick="return confirm('确定进行删除操作吗?');">退出</asp:LinkButton>
14、程序触发事件
btnBegin_Click(this, EventArgs.Empty); //触发事件
15、后台控制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);
}
16、模板页中的按钮绑定回车
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" />
17、带引号的字符串,可以这样些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);
}
18、常用的正则表达式:
<?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- ./?%&=]*)?)$</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>
19、TreeView三级树
Code
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataLoad();
}
}
private void DataLoad()
{
dt = pcr.GetProductClasss();
TreeNode tn = new TreeNode("产品列表"); //根节点
this.TreeView1.Nodes.Add(tn);
for (int i = 0; i < dt.Rows.Count; i++)
{
TreeNode menuNode = new TreeNode();
menuNode.Text = dt.Rows[i]["Name"].ToString();
menuNode.Value = dt.Rows[i]["ID"].ToString();
int j = this.TreeView1.Nodes.Count;
this.TreeView1.Nodes[j-1].ChildNodes.Add(menuNode); //二级节点
this.TreeView1.Nodes[j - 1].SelectAction = TreeNodeSelectAction.Expand; //点击+号旁边的那个节点执行展开动作
AddChild(menuNode, menuNode.Value); //三级节点
}
}
private void AddChild(TreeNode node, string strid)
{
DataTable table = pr.GetProducts(strid);
for (int i = 0; i < table.Rows.Count; i++)
{
TreeNode menuNode = new TreeNode();
menuNode.Text = table.Rows[i]["Name"].ToString();
menuNode.Value = table.Rows[i]["ID"].ToString();
node.ChildNodes.Add(menuNode);
}
}
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
if (this.TreeView1.SelectedNode.Parent.Parent != null) //判断是否是三级节点
{
Response.Write("<script language='javascript'>alert('" + this.TreeView1.SelectedNode.Parent.Parent.Text + "');</script>");
}
}
20、Div里的内容垂直方向上居中
用line-height:2em;只需要将你的原来的px数值除以10,然后换上em作为单位就行了。
21、VS 2005在调试的时候,有时候不会显示错误列表,但是不能正确运行,这时候,你点“是”就行了,这样就可以看到错误了。思维要发散!
22、partial 关键字的作用:用来将一个class、struct或interface的定义拆分,写在不同的源文件中。每个源文件包含类定义的部分,编译应用程序时将把所有部分组合起来。
这样,在处理大型项目时,使一个类分布于多个独立文件中可以让多位程序员同时对该类进行处理。
使用自动生成的源时,无需重新创建源文件便可将代码添加到类中。Visual Studio在创建Windows窗体、Web服务包装代码等时都使用此方法。无需编辑Visual Studio所创建的文件,便可创建使用这些类的代码。[modifiers] partial type
23、网页中禁止右键及复制粘贴:
<script language="javascript" type="text/javascript">
document.oncontextmenu=new Function("event.returnValue=false;");
document.onselectstart=new Function("event.returnValue=false;");
</script>
24、网页中两端对齐:
<div style="font-size:12px;width:300;text-align:justify; text-justify:inter-ideograph">
放英文或中文</div>
25、~表示web服务器端的根目录,此标记只对web服务器端控件有用。对<img>是没用的。
26、js页面传值,原理是分解地址栏的URL
Code
var urlParts=document.URL.split("?");
if (urlParts[1]) //urlParts[1]为传参数部分。如果存在,进行分解
{
var param =new Array;
var parameterParts=urlParts[1].split("&");
for (i=0;i<parameterParts.length;i++)
{
var pairParts=parameterParts[i].split("=");
param[i]=pairParts[1]; //param数组存各参数
}
}
27、DropDownList绑定到集合Dictionary,Hashtable同样。
Code
Dictionary<string,string> dict =new Dictionary<string,string>();
dict.Add("cType", "房间类型");
dict.Add("vScheduled", "是否预定");
dict.Add("cEmpty", "是否是空");
dict.Add("cClean", "干净");
dict.Add("cFloor", "楼层");
dict.Add("cRepair", "维修");
dict.Add("cDirection", "朝向");
this.ddlcase.DataSource = dict;
this.ddlcase.DataTextField = "value";
this.ddlcase.DataValueField = "key";
this.ddlcase.DataBind();
28、三表查询
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)
29、GridView RowDataBound时赋值
e.Row.Cells[1].Text = "已预订";
30、Asp.net页面中,不应该用static类型的变量,static和application类似的。
31、Asp.net中简单使用缓存,提高效率。
Code
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
}
}
private void BindData()
{
if (Cache["Cache"] == null)
{
DataTable dt = GetTable("select * from WorkSheet where iStatusId=4 ");
Cache.Insert("Cache", dt, null, DateTime.Now.AddMinutes(2), TimeSpan.Zero);
GridView1.DataSource = dt;
}
else
GridView1.DataSource = (DataSet)Cache["Cache"];
GridView1.DataBind();
}
32、客户端验证数据是否为空
js
Code
function ValidateData() //参数前面都是textbox,最后一个是select
{
var i;
for (i=0;i<ValidateData.arguments.length-1;i++) //判断textbox
{
if(document.getElementById(ValidateData.arguments[i]).value=="")
{
alert('没有填写完整!');
document.getElementById(ValidateData.arguments[i]).focus();
return false; //不让下面的事件处理程序处理
}
}
if((document.getElementById(ValidateData.arguments[ValidateData.arguments.length-1])).selectedIndex==0) //判断select
{
alert('还剩一项没选!');
document.getElementById(ValidateData.arguments[ValidateData.arguments.length-1]).focus();
return false;
}
return true;
}
页面
Code
<asp:LinkButton ID="lnbSave" runat="server" OnClick="lnbSave_Click"
OnClientClick="return ValidateData('f_AssertNo','f_Name','tbxDep','f_InitValue','f_UsingYears','f_Time','f_ManageSate')" >保存</asp:LinkButton>
33、两日期相减
DateTime dt1 = new DateTime(2006,7,18);
DateTime dt2 = new DateTime(2006,7,17);
TimeSpan ts = dt1 - dt2;
ts.Days;
34、给GridView(RowDataBound)上的TextBox添加客户端事件
((TextBox)e.Row.FindControl("tbxNumber")).Attributes["onkeydown"] = "onlyNum()";
((TextBox)e.Row.FindControl("tbxNumber")).Style["ime-mode"]="Disabled";
35、验证Gridview里的TextBox
Code
function ValidateGridViewTextBox() // 验证Gridview里的TextBox
{
var inputs=document.getElementById("gvInputStoreItemsList").getElementsByTagName("input");
for(var i=0;i<inputs.length;i++)
{
if(inputs[i].type=="text")
{
if(inputs[i].value=="")
{
alert("信息填写不正确!");
inputs[i].focus();
return false;
}
}
}
return true;
}

浙公网安备 33010602011771号