GridView全選全不選以及讀取隱藏列的值的方法

來源:互聯網
上載者:User

經過測試可以使用的方法:

1、在gridview裡邊設定兩個checkbox,均為伺服器控制項,postback不需要;如下面的代碼

<asp:GridView ID="gvUsers" runat="server" AutoGenerateColumns="False"
                DataKeyNames="ID">
            <Columns>
                <asp:TemplateField HeaderText="選擇">
                    <HeaderTemplate>
                        <asp:CheckBox ID="CheckHeader" runat="server" value='<%#Eval("ID") %>' onclick="SelectAll(this);"/>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <asp:CheckBox ID="CheckItem" runat="server"  />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="ID" HeaderText="編號" Visible="False" />
                <asp:BoundField DataField="LoginName" HeaderText="使用者名稱" />
                <asp:BoundField DataField="LastLoginTime" HeaderText="上次登入時間" />
            </Columns>
        </asp:GridView>

 

2、加入javascript語句

 <script language="javascript" type="text/javascript">
       function SelectAll(tempControl)
       {
           //將除頭模板中的其它所有的CheckBox取反

            var theBox=tempControl;
             xState=theBox.checked;   
          
            elem=theBox.form.elements;
            for(i=0;i<elem.length;i++)
            if(elem[i].type=="checkbox" && elem[i].id!=theBox.id)
            {
                if(elem[i].checked!=xState)
                elem[i].click();
            }
       }
    </script>

 

這樣,就可以選擇全選或者全不選了。

 

3、讀取Gridview隱藏列的值

 

如1中代碼,將隱藏列ID加入DataKeyNames

DataKeyNames="ID"

 

4、讀取選中行的ID值,返回“,”間隔的字串 

 protected void Button1_Click(object sender, EventArgs e)
        {
            string str = "";
            for (int i = 0; i < gvUsers.Rows.Count; i++)
            {
                if (((CheckBox)gvUsers.Rows[i].Cells[0].Controls[1]).Checked)
                {
                    str = str+gvUsers.DataKeys[i]["ID"].ToString()+",";                    
                }
              
            }

       if (str.Length > 0)  str = str.Remove(str.LastIndexOf(","), 1); //去除最後一個,
            Response.Write(str);

        }

可以獲得列表 1,2,3,5,

然後使用去最後一個,的代碼,就可以搞定了!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.