Asp .NET控件使用常见问题及技巧大全
在asp .net开发时,使用控件过程常有些小问题,每次都去找有点麻烦,在此收集遇到的问题,不断补充……
O、通用
1、如何画出控件的选中状态,像设计时的那样
【解决方案】可通过换图片来实现:示例代码如下(btnAdd为一服务端按钮控件)
btnAdd.Attributes("onMouseOver") = "javascript:this.src='AN_Add_Over.gif';" btnAdd.Attributes("onMouseOut")= "javascript:this.src='AN_Add.gif';" btnAdd.Attributes("onMouseDown") = "javascript:this.src='AN_Add_Down.gif';"
一、DropDownList
1、如何选择选项:
【问题描述】DropDownList控件不能直接赋值给Text属性来选择。
【解决办法】
string id="1"; DropDownList1.Items.FindByValue(id).Selected=true;
2、不能在 DropDownList 中选择多个项:
【问题描述】当选择一个选项时(源代码如下),出现“不能在 DropDownList 中选择多个项”的错误提示。
DropDownList1.Items.FindByValue(id).Selected=true;
【解决办法】
DropDownList1.ClearSelection(); DropDownList1.Items.FindByValue(id).Selected=true;
二、TextBox
1、获取焦点时,选中内容
【技巧】
<asp:TextBox ID="TextBoxUserID" runat="server" style="width:160px" onfocus="javascript:this.select()"/> <input type="text" onfocus="this.select()" value="sssssbbbbccc"/>
2、Password风格时,赋值
【问题描述】Password风格时,直接对Text属性赋值无效。
【解决办法】
textBoxPasswordField.Attributes.Add("value", "mypass");
3、回车转移焦点到下一控件
【方法一:C#后台代码】
this.txt_userName.Attributes.Add("onkeydown","if(event.keyCode==13)event.keyCode=9");
【方法二:Asp.NET 前台代码】
<ASP:TextBox onkeydown="if(window.event.keyCode==13){window.event.keyCode=9;}">
【方法三:通用】
<mce:script language="javascript" for="document" event="onkeydown"><!-- if(event.keyCode==13 && event.srcElement.type!='button' && event.srcElement.type!='submit' && event.srcElement.type!='reset' && event.srcElement.type!='textarea' && event.srcElement.type!='') event.keyCode=9; // --></mce:script>
判断是否为button, 是因为在HTML上会有type="button";判断是否为submit,是因为HTML上会有type="submit";判断是否为reset,是因为HTML上的"重置"应该要被执行;判断是否为空,是因为对于HTML上的"<a>链接"也应该被执行,这种情况发生的情况不多,可以使用"tabindex=-1"的方式来取消链接获得焦点.
三、GridView
1、获取CheckBoxField列值
【问题描述】直接通过GridView的Cells属性是无法获取其值的,其中Text属性为空串。
【解决办法】
/*----------------------------------------- // 前台代码 <asp:GridView ID="GridView1" runat="server" Width="418px"> <Columns> <asp:CheckBoxField DataField="是否有效" HeaderText="有效性" /> </Columns> </asp:GridView> -----------------------------------------*/ //后台代码: CheckBox cb = (CheckBox)GridView_Users.SelectedRow.Cells[1].Controls[0]; bool bResult= cb.Checked;
2、GridView无数据时不显示的问题
【问题描述】绑定数据时,如果DataTable对象行数为0,则添加一空行,然后修改显示样子。
【解决办法】
protected bool GridViewBind(GridView gridview, string sqlcmd) { try { DataTable dt = new DataTable(); SqlDataAdapter sqlda = new SqlDataAdapter(sqlcmd, GetConnectionString()); sqlda.Fill(dt); gridview.AutoGenerateColumns = true; gridview.Font.Size = FontUnit.XSmall; if (dt.Rows.Count == 0) // 添加空记录 { dt.Rows.Add(dt.NewRow()); gridview.DataSource = dt; gridview.DataBind(); int columnCount = gridview.Rows[0].Cells.Count; gridview.Rows[0].Cells.Clear(); gridview.Rows[0].Cells.Add(new TableCell()); gridview.Rows[0].Cells[0].ColumnSpan = columnCount; gridview.Rows[0].Cells[0].Text = "没有记录."; dt.Rows.Clear(); } else { gridview.DataSource = dt; gridview.DataBind(); } } catch (Exception ex) { SetErrorMessage(string.Format("绑定 GridView 时出现异常:/n ", ex.Message)); return false; } return true; }
四、UpdatePanel(AJAX)
1、UpdatePanel中运行脚本
【解决办法】
ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "test", "alert('哈哈,执行了这个脚本哦。')", true);