我有一个带有一些复选框的网格视图。因此,在网格视图更新后,我试图查看是否选中了一个特定的复选框。但是,我收到错误说
空引用异常由用户代码
取消
我的代码:
<asp:TemplateField HeaderText="FollowUp" SortExpression="FollowUp">
<EditItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server"
Checked='<%# Bind("FollowUp") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkFollowup" runat="server"
Checked='<%# Bind("FollowUp") %>' Enabled="false" />
</ItemTemplate>
</asp:TemplateField>
代码隐藏文件:
protected void GViewSrvcCheck_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
foreach (GridViewRow gRow in GViewSrvcCheck.Rows)
{
CheckBox fllwup = gRow.FindControl("chkFollowup") as CheckBox;
if (fllwup.Checked)//this is the one causes the error
{
}
}
}
这里出了什么问题?我怎么能解决这个问题?
答案 0 :(得分:2)
有两个可能的问题:
CheckBox
如果您使用了演员表,那么您就知道它是什么:
CheckBox followUp = (CheckBox) gRow.FindControl("chkFollowup");
使用as
后几乎总是错误而没有检查无效。
我怀疑问题是ID 实际还有一些东西可以识别其中的行...但是通过上面的更改你至少可以告诉你哪个错误路径正在服用。
你可能不得不改变你找到控件的方式 - 但只要“找不到控件”是错误,我认为让它抛出异常是合理的。如果控件不存在是合法的情况,你应该明确地处理它 - 但是,否则,向用户显示错误页面并记录异常(例如使用ELMAH)就可以了。