System.NullReferenceException: 未将对象引用设置到对象的实例
一直找不到原因:请帮忙看一下,谢谢前面的代码:
<table style="height: 214px" width="100%">
<tr>
<td colspan="3" align="left" background="images/titlebg.gif" style="HEIGHT: 31px">
<img src="Images/tl_1.gif" border="0"> 系统管理员列表</td>
</tr>
<tr>
<td colspan="3">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="100%" Height="134px" >
<Columns>
<asp:TemplateField HeaderText="ID" Visible="False">
<ItemTemplate>
<asp:Label ID="label1" runat="server" Text="<%#Bind("AdminID")%>"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="管理员帐号">
<ItemTemplate>
<%# Eval("userName").ToString() %>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="password" HeaderText="管理员密码" />
<asp:TemplateField HeaderText="选择">
<ItemTemplate>
<asp:CheckBox runat="server" ID="chk"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
<tr>
<td colspan="3" style="height: 25px">
<asp:Button ID="btn_add" runat="server" Text="添 加" OnClick="btn_add_Click" />
<asp:Button ID="btn_del" runat="server" Text="删 除" OnClick="btn_del_Click" /></td>
</tr>
<tr>
<td style="height: 22px" colspan="3" align="right">
</td>
</tr>
</table>
后边的代码:
protected void GetAdmin()
{
AdminSystem adminsystem = new AdminSystem();
GridView1.DataSource = adminsystem.GetModel();
GridView1.DataBind();
}
protected void btn_add_Click(object sender, EventArgs e)
{
Response.Redirect("Admin_Add.aspx");
}
protected void btn_del_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
if (((CheckBox)row.FindControl("chk")).Checked)
{
int id = int.Parse(((Label)row.FindControl("id")).Text);
this.Admin_Del(id);
}
}
}
//删除
protected void GetAdmin()
{
AdminSystem adminsystem = new AdminSystem();
GridView1.DataSource = adminsystem.GetModel();
GridView1.DataBind();
}
protected void btn_add_Click(object sender, EventArgs e)
{
Response.Redirect("Admin_Add.aspx");
}
protected void btn_del_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
if (((CheckBox)row.FindControl("chk")).Checked)
{
int id = int.Parse(((Label)row.FindControl("id")).Text);
this.Admin_Del(id);
}
}
}
//删除
protected void Admin_Del(int id)
{
AdminSystem Del = new AdminSystem();
Del.Admin_Del(id);
GetAdmin();
} --------------------编程问答-------------------- 这种错通常是因为传值为空,很常见的错误
具体是哪行报错?指名一下! --------------------编程问答-------------------- //删除
protected void Admin_Del(int id)
{
AdminSystem Del = new AdminSystem();
Del.Admin_Del(id);
//GetAdmin();
}
把GetAmin()
放到
foreach (GridViewRow row in GridView1.Rows)
{
if (((CheckBox)row.FindControl("chk")).Checked)
{
int id = int.Parse(((Label)row.FindControl("id")).Text);
this.Admin_Del(id);
}
}
后面
--------------------编程问答-------------------- int id = int.Parse(((Label)row.FindControl("id")).Text);
没找到叫id的label吧 --------------------编程问答--------------------
是这一行
int id = int.Parse(((Label)row.FindControl("id")).Text);
--------------------编程问答-------------------- 那很可能是没有叫id的label --------------------编程问答-------------------- 或者是名为id的label的值为null这样就必错无疑了!
补充:.NET技术 , ASP.NET