我是菜鸟,最近在学习datalist想在datalist外边加个按钮,在按钮事件里实现删除,在datalist里面有checkbox,单击按钮时把选择的这一行给删除掉。
按钮在datalist里面的删除问题已经实现过了,按钮在外边就是每一行的id不知道怎么获得。
哪位大哥能帮帮忙给解决一下?小弟不胜感激!

解决方案 »

  1.   

    外边也一样啊,就是要得到datalist当前的选定项啊select之类的东西吧
      

  2.   

    ID放到一個隱藏的列中,在DataList的ItemDataBound事件裡做取得
      

  3.   

    //循环遍历checkbox控件string id = "";
            for (int i = 0; i < this.GridView1.Rows.Count; i++)
            {
                CheckBox chkSelect = (CheckBox)this.GridView1.Rows[i].Cells[0].FindControl("checkbox1");
                if (chkSelect.Checked)
                {
                    id += this.GridView1.DataKeys[i].Value.ToString() + ",";
                }
            }        if (id == "")
            {
                Page.RegisterStartupScript("","<script>alert('请选择要删除的城市!');</script>");
            }
            else
            {
                try
                {
                    id = id.Substring(0, id.Length - 1);
                    //删除操作
                }
                catch
                {
                    Response.Write("<script>alert('删除失败!');</script>");
                }
            }
      

  4.   

    void DeleteButton_Click(object sender,EventArgs e)
    {
    foreach(DataListItem item in DataList)
    {
        CheckBox box =(CheckBox)item.FindControl("CheckBox_Id");
        if(box.Checked)
        {
             string id=item.DataKeys[item.ItemIndex];
             //这里可以存在一个数组里面,也可以直接删除
        }
    }
    }
      

  5.   

    <INPUT id="ck"  type="checkbox" name="ck" value='<%# %>' onclick="">
    datalist里加一列邦定ID的checkboxonclick时将该值放到页面里的<input type="hidden" runate="server" />里后台就可以获取该ID 
      

  6.   

    datalist每个item里放个hidden ,或者设置datalist的datakeyfield用来绑定id
    这里给你个用hidden的例子:    protected void BtnDelete_Click(object sender, ImageClickEventArgs e)
        {
    string delid="";
            
            foreach (DataListItem dli in this.DataList1.Items)
            {
                if (((CheckBox)dli.FindControl("CheckBox1")).Checked) //假设checkbox的id是CheckBox1
                {
                    delid += ((HiddenField)dli.FindControl("id")).Value + ","; //假设hiddenfield的id是id
                }
            }
            if (delid.Length < 2)
            {
                //没有选中checkbox,可输出提醒
                return;
            }
            delid = delid.Substring(0, delid.Length - 1);
            string strSQL="DELETE FROM [TABLE] WHERE [ID] IN (" + delid + ")";
             
     //连接数据库并执行操作..
         }
      

  7.   


    <asp:DataList ID="DataList1" DataKeyField="id" Width="100%" runat="server">
      <ItemTemplate>
       ....
      </ItemTemplate>
    </asp:DataList>
    <asp:Button ID="Button1" runat="server" Text="删 除" OnClick="Button1_Click" Height="19px" /> protected void Button1_Click(object sender, EventArgs e)
        {
            string connstr = ConfigurationManager.AppSettings["dataString"];
            SqlConnection conn = new SqlConnection(connstr);
            SqlCommand cmd;        foreach (DataListItem item in DataList1.Items)
            {
                CheckBox cbox = (CheckBox)item.FindControl("CheckBox1");
                if (cbox.Checked == true)
                {
                    string p = (DataList1.DataKeys[item.ItemIndex]).ToString();                string sql = "delete from tableName where id=" + p;
                    cmd = new SqlCommand(sql, conn);
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    conn.Close();                Response.Write("<script>alert('删除成功');window.location.href('xxx.aspx')</script>");
                }
            }
        }
      

  8.   

    简单···你把CHECK list的ITEM 的VALUE 绑定ID 然后 遍历的时候 获取 checked=true 的选项的ID就OK
      

  9.   

    这个:
    <asp:DataList ID="DatalistTest" runat="server" >
     <ItemTemplate>
       <tr>
          <td align="center">
       <asp:CheckBox ID="checkboxSelect" runat="server" ValidationGroup='<%#Eval("ID")%>' />                                                                        
          </td>
      </tr>
     </ItemTemlate>
    </asp:DataList><asp:Button Id="btnSelect" runat="server" Text="删除" OnClick="ChangeGo_Click" />
                string id = string.Empty;
                for (int j = 0; j < this.DatalistTest.Items.Count; j++)
                {
                    var ckbox = DatalistTest.Items[j].FindControl("checkboxSelect") as CheckBox;
                    if (ckbox != null && ckbox.Checked)
                    {
                        id = ckbox.ValidationGroup + ";" + id;
                    }
                }
      

  10.   

    怎么删除的?我也试了试怎么不行呢 还有哦..你的 var 是什么意思?