在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';"
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;
string id="1";
DropDownList1.Items.FindByValue(id).Selected=true;
2、不能在 DropDownList 中选择多个项:
【问题描述】当选择一个选项时(源代码如下),出现“不能在 DropDownList 中选择多个项”的错误提示。
DropDownList1.Items.FindByValue(id).Selected=true;
DropDownList1.Items.FindByValue(id).Selected=true;
【解决办法】
DropDownList1.ClearSelection();
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"/>
<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");
textBoxPasswordField.Attributes.Add("value", "mypass");
3、回车转移焦点到下一控件
【方法一:C#后台代码】
this.txt_userName.Attributes.Add("onkeydown","if(event.keyCode==13)event.keyCode=9");
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;}">
<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>
<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;
/*-----------------------------------------
// 前台代码
<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;
}
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中运行脚本
【解决办法】
view plaincopy to clipboardprint?
ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "test", "alert('哈哈,执行了这个脚本哦。')", true);
ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "test", "alert('哈哈,执行了这个脚本哦。')", true);
回车时 触发指定的某个按钮控件 (方法二)
第一步:
//在html aspx页 加上下列JS代码
<script language="jscript">
function SubmitKeyClick(button)
{
if(event.keyCode == 13)
{
event.keyCode=9;
event.returnValue = false;
document.all[button].click();
}
}
</script>
第二步:
//在 <form>表单中加上如下代码 onkeydown="SubmitKeyClick('IB_search') 调用jscript方法指点控件名 id
<form id="form2" runat="server" onkeydown="SubmitKeyClick('IB_search');">
第三步:指定的asp:imagebutton控件
<td style="height: 23px">
<asp:imagebutton id="IB_search" runat="server" imageurl="~/AdminManage/Images/search_confirm.jpg" OnClick="IB_search_Click"></asp:imagebutton>
</td>
本文汇总了在ASP.NET开发中遇到的控件交互问题,包括如何设置按钮的选中状态、DropDownList的选择操作、TextBox的焦点与内容处理,以及GridView中的CheckBoxField获取和无数据情况的处理。此外,还涉及了UpdatePanel中运行脚本和回车触发按钮的方法。

2741

被折叠的 条评论
为什么被折叠?



