急求
我写的删除datalist中选中的多项checkbox的代码是下面的,系统提示说是“if(ck.Checked)'这儿未将对象引用设置到对象的实例,烦各位高手指教一下怎么修改啊?int[] arr=new int[100];
for(int i = 0; i < DataList1.Items.Count; i++)
{
CheckBox ck =this.DataList1.Items[i].FindControl("CheckBox1")as CheckBox;
if (ck.Checked)
{
arr[i] = int.Parse((DataList1.Items[i].FindControl("Label2") as Label).Text);
string sql = "delete from selecting where id in (";
for (int j = 0; j < arr.Length; )
{
sql += "+j+" + ",";
}
sql = sql.Substring(0, sql.Length - 1);
sql += ")";
SqlCommand com = new SqlCommand(sql, con);
com.ExecuteNonQuery();
}
--------------------编程问答-------------------- 正确的代码
注意: if (!Page.IsPostBack)
注意:EnableViewState="true"
<%@ Page Language="C#" EnableViewState="true" %>--------------------编程问答-------------------- CheckBox ck =this.DataList1.Items[i].FindControl("CheckBox1")as CheckBox;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("id", typeof(System.Int32)));
dt.Columns.Add(new System.Data.DataColumn("Name", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("Score", typeof(System.Double)));
System.Random rd = new System.Random();
for (int i = 1; i < 6; i++)
{
dr = dt.NewRow();
dr[0] = i * i;
dr[1] = "【孟子E章】" + i.ToString();
dr[2] = System.Math.Ceiling(rd.NextDouble() * 100);
dt.Rows.Add(dr);
}
System.Data.DataView dv = new System.Data.DataView(dt);
DataList1.DataSource = dv;
DataList1.DataBind();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < DataList1.Items.Count; i++)
{
CheckBox ck = this.DataList1.Items[i].FindControl("CheckBox1") as CheckBox;
if (ck.Checked)
{
Response.Write("<li> 选择了:" + (DataList1.Items[i].FindControl("Label2") as Label).Text);
}
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
<form id="form1" runat="server">
<asp:DataList ID="DataList1" runat="server" CellPadding="0" CellSpacing="0">
<ItemTemplate>
<li>
<asp:CheckBox ID="CheckBox1" runat="server" /><asp:Label ID="Label2" Text='<%#Eval("id") %>'
runat="server"></asp:Label></li>
</ItemTemplate>
</asp:DataList>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</form>
</body>
</html>
你去遍历多个是否处于选中的时候 用checkbox1 这样不行的吧 你的id都是checkbox1吗? --------------------编程问答-------------------- CheckBox ck =this.DataList1.Items[i].FindControl("CheckBox1")as CheckBox;
转换完 ck 为空 有可能没找到这个控件
加上 if(ck!=null)
{
//....
}
--------------------编程问答-------------------- 加上 if(ck!=null)
--------------------编程问答-------------------- 系统提示说是“if(ck.Checked)'这儿未将对象引用设置到对象的实例,就是指未找到ck.
在前面加上if(ck!=null)
并且不忘了load事件里面加
if (!Page.IsPostBack)
{
}
补充:.NET技术 , ASP.NET