如题我增加一个全选按钮后,结果选中2项数据库存了N条记录
代码如下
   foreach (DataListItem item in DataList1.Controls)
                {
                    string str = "";
                    str = Request.Form.Get("checkbox1");
                    if (str != "" && str != null)
                    {                        // for (int i = 0; i < this.DataList1.Items.Count; i++)
                        for (int i = 0; i < DataList1.Items.Count; i++)
                        {                            Label LabelX = (Label)this.DataList1.Items[i].FindControl("Label4");                            Label labelComNa = (Label)this.DataList1.Items[i].FindControl("Label5");
                            Label labelDutNa = (Label)this.DataList1.Items[i].FindControl("Label6");
                            Label labelDutID = (Label)this.DataList1.Items[i].FindControl("Label55");
                            kk.UserID = mUser.UserID;
                            kk.checkResume = "2";
                            kk.CompanyID = Convert.ToInt32(LabelX.Text);

解决方案 »

  1.   

        public void CheckAll(object sender, System.EventArgs e)
        {
            //获得全选按纽的事件源
            CheckBox chkAll = (CheckBox)sender;
            if (chkAll.Text == "全选")
            {
                //其实当前遍历的项是当前页面的记录条数
                foreach (DataGridItem dl in this.DataGrid1.Items)
                {
                    CheckBox chkSelect = (CheckBox)dl.FindControl("chkSelect");
                    chkSelect.Checked = chkAll.Checked;
                }
            }
        }
      

  2.   

    你这个是DataGrid容器,我说的是Datalist虽然有雷同,但是深层学的还不扎实。望高人指点
      

  3.   

    <script language="javascript">
    function selectAll(){
    var len=document.Index.elements.length;
    var i;
        for (i=0;i<len;i++){
        
    if (document.Index.elements[i].type=="checkbox"){
            document.Index.elements[i].checked=true;
     }
    }

    } function unSelectAll(){
              var len=document.Index.elements.length;
              var i;
              for (i=0;i<len;i++){
                   if (document.Index.elements[i].type=="checkbox"){
                      document.Index.elements[i].checked=false; 
                   }   
                  
              } 
              }
        
    </script><INPUT class="redButtonCss" onclick="selectAll()" type="button" value="全 选">
      

  4.   

    <script type="text/javascript">
                //选中全选
    function checkradio(obj)
    {
    var t=document.all.tags("input");
    for(i=0;i<t.length;i++)
    {
     if(t[i].type=="checkbox")
     {
     t[i].checked=obj.checked;
     }
     }
    }
    //选中单选
    function checkun()
    {
    //document.Form1.cba.checked=false;
    document.getElementById("cba").checked=false;
    }
    </script>
    ------------------------  <asp:TemplateField HeaderText="选择">
        <ItemTemplate>
       <asp:CheckBox ID="cbelect" runat="server"  onclick='checkun()'/>//单选
         </ItemTemplate>
         <HeaderTemplate>
           <input id="cba" type="checkbox"  onclick='checkradio(this)'/>//全选
            </HeaderTemplate>
    <ItemStyle HorizontalAlign="Center" />
            </asp:TemplateField>-------------------
      

  5.   

        protected void Button2_Click(object sender, EventArgs e)
        {
            this.DataList1.Items;
            foreach (DataListItem r in this.DataList1.Items)
            {
                if (((CheckBox)r.FindControl("Chk")).Checked)
                {
                    //存储
                }
            }
        }
      

  6.   

    哈哈 好的,我用Datalist容器显示一组数据,分页+全选+单选按钮。 分页单选都实现啦,就是全选按钮
    前台代码
      <HeaderTemplate>
       <table border="0" cellpadding="0" cellspacing="0" style="width: 754px">
     <tr>
       <td style="text-align: right">
      <asp:Button ID="Button1" runat="server" CommandName="Addall" Text="批量申请" /></td>
                                                                        </tr>
                                                                    </table>
    。。
    后台
     protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
        {
              if (e.CommandName == "Addall")
            {
                if (Session["UserModel"] != null)
                {
                     foreach (DataListItem item in DataList1.Controls) 
                    { 
                        string str = ""; 
                        str = Request.Form.Get("checkbox1"); 
                        if (str != "" && str != null) 
                        {                         // for (int i = 0; i  < this.DataList1.Items.Count; i++) 
                            for (int i = 0; i  < DataList1.Items.Count; i++) 
                            {                             Label LabelX = (Label)this.DataList1.Items[i].FindControl("Label4");                             Label labelComNa = (Label)this.DataList1.Items[i].FindControl("Label5"); 
                                Label labelDutNa = (Label)this.DataList1.Items[i].FindControl("Label6"); 
                                Label labelDutID = (Label)this.DataList1.Items[i].FindControl("Label55"); 
                                kk.UserID = mUser.UserID; 
                                kk.checkResume = "2"; 
                                kk.CompanyID = Convert.ToInt32(LabelX.Text);
      

  7.   

    你用 foreach 嵌套了一个for
    但是好像没有判断,是选中的范围?
      

  8.   

       string str = "";  
                        str = Request.Form.Get("checkbox1");  
                        if (str != "" && str != null)  
                        {  
    这几句是判断是否选中的,前台有JS
      

  9.   

    function checkboxname_onclick()
     {
        if(document.all.checkbox1.length>1)
            {
                for(var i=0;i<document.all.checkbox1.length;i++)
                {
                    if(document.all.checkbox1[i].checked)
                    {
                        document.all.checkbox1[i].checked = false;          
                        
                        }     
                        else
                        {
                            document.all.checkbox1[i].checked = true;
                        }
                        
                }
            }}
    然后在
     <ItemTemplate>
     里加上啦
     <input id="checkbox1" name="checkbox1" type="checkbox" value='<%# DataBinder.Eval(Container.DataItem, "DutyID")%>' /></td>
      

  10.   

    我把是否选中的判断放到For循环里结果只有一条记录
    可按目前的情况呢吧当前页当前页全部放到数据库啦
    全部放到数据啦
      

  11.   

    for(int i=0;i<this.DataGrid1.Items.Count;i++)
    {
    if(((CheckBox)this.DataGrid1.Items[i].FindControl("CheckBox1")).Checked)
    {
    prikey=this.DataGrid1.Items[i].Cells[1].Text;

    }
    }
      

  12.   

    楼上的天山兄,你的是DataGrid ....我试啦不行
    我曾经测试过2个容器这些方法不能通用~我深层的融汇不通-_=!
    我在Grideview里测试成功。这个datalist也想测试成功呵呵
      

  13.   

    to:only_endure 
       现在存入数据库N多条记录那个解决啦。现在的问题是我判断是否选中的语句不知道放那里好啦。
        foreach (DataListItem item in DataList1.Controls) 
                    { 
                        string str = ""; 
                        str = Request.Form.Get("checkbox1"); 
                        if (str != "" && str != null) 
                        {                         // for (int i = 0; i  < this.DataList1.Items.Count; i++) 
                            for (int i = 0; i  < DataList1.Items.Count; i++) 
                            {                           
                                }
                          
                          }
                  
                          ----------------------------------------------其中 string str = ""; 
                        str = Request.Form.Get("checkbox1"); 
                        if (str != "" && str != null) 
    这个是判断的