foreach (DataRow row in dt.Rows) //输出html表格
{
Response.Write("<table width=500 height=20 border=0 cellspacing=0 cellpadding=0><tr><td width=50><input type='checkbox' name='chk' value='"+row["id"].ToString()+"'</td><td width=150>" + (row["sn"]) + "</td><td width=150></tr></table>");
}
//我记得因为这个用的是循环输出checkbox,所以name都一样。所以在name后面统一加上数据的id。这样就有唯一值了protected void Del_Click(object sender, EventArgs e)
{
//此处具体代码该如何写?
//需要达到的需求如下:
//通过request.form["chk"]活得具体选中的项(只知道需要通过request.form来做,但是具体实现方法还是不清楚,是不是还需要遍历一下checkbox)
//我记得因为这个用的是循环输出checkbox,所以name都一样。所以在name后面统一加上数据的id。这样就有唯一值了
//然后删除该选中项
}
谢谢大家热心帮助,不过还是强调一下。我知道这个用控件可是实现,可是目前我只能用上面的方法来做。建议我用控件的朋友们,谢谢你们了。
string ary = str.split(',');
for(int i = 0 ;i <ary.length;i++)
{
ary[i] 就是那个id
}
Del_Click对隐藏域中的值做相应的处理
在选择 checkbox的时候,利用js把所选中的值保存到上面的hidden的value当中,并且用特殊符号分开,然后后台执行删除事件的时候去取这个hidden的值
删除代码中怎么写呢 delete * from table where id=?? id这块怎么写
如果你一行一行册,id="+ ary[i];//注意要先检查一下这个id的合法性.如果批量.
直接 用 where id in ("+Request.Form["chk"]+")";//也要先检查合法性
string [] ary = str.split(',');
for(int i = 0 ;i <ary.length;i++)
{
ary[i] 就是那个id
}
string ary = str.split(',');
for(int i = 0 ;i <ary.length;i++)
{
ary[i] 就是那个id
}
==========
这不就是具体的代码么?
当我选中一个checkbox后,出现这个提示:未将对象引用设置到对象的实例
protected void Button5_Click(object sender, EventArgs e)
{
string str = Request.Form["chk"].ToString();
string ary = Convert.ToString(str.Split(','));
for(int i = 0 ;i <ary.Length;i++)
{
Response.Write(ary[i]);
}
}
我先测试一下,没有写sql删除,只是看能不能先用response.write来把选中项写出来,可是就有上面那个提示,而且我还加了convert转换,不然也有错误提示
protected void Button5_Click(object sender, EventArgs e)
{
string str = Request.Form["chk"];
string[] ary = str.Split(',');
for(int i = 0 ;i <ary.Length;i++)
{
Response.Write(ary[i]);
}
}
不管是否选中一个checkbox,他都会出现这个提示:未将对象引用设置到对象的实例
下面这个value是我数据的id,生成页面后我查看了一下html源码,可以读出这个id的值,但是如何知道我是否选中了哪个checkbox呢。就是通过上面的代码吗?
<input type='Checkbox' name='chk' value='"+row["id"].ToString()+"'</td>
string[] selectedValues = valueList.Split(',');
valueList 中是你选中的checkbox的value的序列,是用“,”号隔开的
所以用split就可以得到所有的选种的值
是因为你checkbox的table都不在form自然找不到request.form["chk"]了解决方法就是
窗体页面在form里面添加一个literal控件
代码页面
foreach (DataRow row in dt.Rows) //输出html表格
{
literal控件实例.Text += "<table width=500 height=20 border=0 cellspacing=0 cellpadding=0><tr><td width=50><input type='checkbox' name='chk' value='"+row["id"].ToString()+"'</td><td width=150>" + (row["sn"]) + "</td><td width=150></tr></table>";
}
成功示例:
<html><head></head>
<body>
<form id="form1" runat="server">
<input type="checkbox" id="AAA" name="BBB">
</form>
</body>
</html>
.cs后台页面
string str = request.form["BBB"].tostring();
string[] slist = str.split(",");