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。这样就有唯一值了
        //然后删除该选中项
    }


谢谢大家热心帮助,不过还是强调一下。我知道这个用控件可是实现,可是目前我只能用上面的方法来做。建议我用控件的朋友们,谢谢你们了。

解决方案 »

  1.   

    string str = Request.Form["chk"] 
    string ary = str.split(','); 
    for(int i = 0 ;i <ary.length;i++) 

        ary[i] 就是那个id
    }
      

  2.   

    注册一个隐藏域当选择的数据行的时候用javascript遍历'chk' 改变该隐藏域的值然后在
    Del_Click对隐藏域中的值做相应的处理
      

  3.   

    建议换个思路:页面上放个hidden
    在选择 checkbox的时候,利用js把所选中的值保存到上面的hidden的value当中,并且用特殊符号分开,然后后台执行删除事件的时候去取这个hidden的值
      

  4.   


    删除代码中怎么写呢 delete * from table where id=??  id这块怎么写
      

  5.   

    asp.net 是基于状态管理的,生成的Table是无状态的,用asp.net的方法处理是取不到值的。无状态,要用无状态的办法,把form的runat="server"属性去掉和传统的html处理方法一样,这样就可以了取到值了,但当前页面不能用asp.net处理方法。
      

  6.   


    如果你一行一行册,id="+ ary[i];//注意要先检查一下这个id的合法性.如果批量.
    直接 用 where id  in ("+Request.Form["chk"]+")";//也要先检查合法性
      

  7.   

    string str = Request.Form["chk"] 
    string [] ary = str.split(','); 
    for(int i = 0 ;i <ary.length;i++) 

        ary[i] 就是那个id 
    }
      

  8.   

    string str = Request.Form["chk"] 
    string ary = str.split(','); 
    for(int i = 0 ;i <ary.length;i++) 

        ary[i] 就是那个id 

    ==========
    这不就是具体的代码么?
      

  9.   


    当我选中一个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转换,不然也有错误提示
      

  10.   

    string[] ary = str.split(','); 
      

  11.   


    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>
      

  12.   

    string valueList = Request.Form["chk"];
    string[] selectedValues = valueList.Split(',');
    valueList 中是你选中的checkbox的value的序列,是用“,”号隔开的
    所以用split就可以得到所有的选种的值
      

  13.   

    可是每次都会有这个提示:未将对象引用设置到对象的实例 而且我还发现。我用response输出的html后,查看生成页面,发现这个表格并不在body里面。
      

  14.   

    可是每次都会有这个提示:未将对象引用设置到对象的实例 
    是因为你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>";
           }
      

  15.   

    可是每次都会有这个提示:未将对象引用设置到对象的实例  我估计楼主还没找到问题的关键,request.form[""]中关键字是填客户端控件的“name”属性,而不是id,和是否引用 literal 控件无关。
    成功示例:
    <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(",");