首页  ·  知识 ·  云计算
Asp.NET控件使用常见问题及技巧大全
网友    综合  编辑:dezai   图片来源:网络
在asp .net开发时,使用控件过程常有些小问题,每次都去找有点麻烦,在此收集遇到的问题,不断补充
 O、通用
1、如何画出控件的选中状态,像设计时的那样
【解决方案】可通过换图片来实现:示例代码如下(btnAdd为一服务端按钮控件)
[c-sharp] view plaincopy
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属性来选择。
【解决办法】
[c-sharp] view plaincopy
string id="1";  
DropDownList1.Items.FindByValue(id).Selected=true;  
 
2、不能在 DropDownList 中选择多个项:
【问题描述】当选择一个选项时(源代码如下),出现“不能在 DropDownList 中选择多个项”的错误提示。
[c-sharp] view plaincopy
DropDownList1.Items.FindByValue(id).Selected=true;   
 
【解决办法】
[c-sharp] view plaincopy
DropDownList1.ClearSelection();  
DropDownList1.Items.FindByValue(id).Selected=true;   
 
二、TextBox
1、获取焦点时,选中内容
【技巧】
[xhtml] view plaincopy
<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属性赋值无效。
【解决办法】
[c-sharp] view plaincopy
textBoxPasswordField.Attributes.Add("value", "mypass");  
 
3、回车转移焦点到下一控件
【方法一:C#后台代码】
[c-sharp] view plaincopy
this.txt_userName.Attributes.Add("onkeydown","if(event.keyCode==13)event.keyCode=9");  
 
【方法二:Asp.NET 前台代码】
[c-sharp] view plaincopy
<ASP:TextBox onkeydown="if(window.event.keyCode==13){window.event.keyCode=9;}">  
 
【方法三:通用】
[javascript] view plaincopy
<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属性为空串。
【解决办法】
[c-sharp] view plaincopy
/*----------------------------------------- 
// 前台代码 
<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,则添加一空行,然后修改显示样子。
【解决办法】
[c-sharp] view plaincopy
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中运行脚本
【解决办法】
[c-sharp] view plaincopy
ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "test", "alert('哈哈,执行了这个脚本哦。')", true);  
本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读