none
DataGridView問題 RRS feed

  • 問題

  • 請教各位:
    DataGridView的ColumnHeader可以向yahoo信箱一樣不顯示文字
    只顯示一個checkbox,勾選後 底下所有的Checkbox都勾選起來嗎??

    感謝各位
    2009年7月21日 上午 07:05

解答

所有回覆

  • 請參考下列程式碼片段,謝謝。
    1.於Gridview中加入TemplateField。
    2.於該欄位的HeaderTemplate中放一個Checkbox命名為chkboxAll。
    3.於該欄位的ItemTemplate中放一個checkbox命名為chkbox。
    4.設定chkboxAll.Autopostback=true。
    5.於chkboxAll_CheckedChanged事件中根據chkboxAll的checked屬性,將每一列的chkbox.checked設為與chkboxAll相同。
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                using (NorthwindEntities context = new NorthwindEntities())
                {
                    ObjectQuery<Region> region = context.Region;
                    var result = from p in region
                                 select p;
                    GridView1.DataSource = result;
                    GridView1.DataBind();
                }
            }
        }
        protected void chkboxAll_CheckedChanged(object sender, EventArgs e)
        {
            CheckBox chkboxAll = (CheckBox)sender;
            if (chkboxAll != null)
            {
                bool bolIsChecked = chkboxAll.Checked;
                for (int i = 0; i < GridView1.Rows.Count; i++)
                {
                    CheckBox chkbox = (CheckBox)GridView1.Rows[i].FindControl("chkbox");
                    if (chkbox != null) chkbox.Checked = bolIsChecked;
                }
            }
        }

      <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                <Columns>
                    <asp:TemplateField>
                        <HeaderTemplate>
                            <asp:CheckBox ID="chkboxAll" runat="server" AutoPostBack="True" 
                                oncheckedchanged="chkboxAll_CheckedChanged" />
                        </HeaderTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="chkbox" runat="server" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="RegionID" HeaderText="RegionID" />
                    <asp:BoundField DataField="RegionDescription" HeaderText="RegionDescription" />
                </Columns>
            </asp:GridView>
    2009年7月21日 上午 10:27
  • to Terry:
    謝謝你的回覆,但是我的是winform
    其實我的問題就是 可以在ColumnHeader上產生一個checkbox
    如同yahoo信箱的刪除功能一樣

    感謝您
    2009年7月21日 上午 10:32
  • CheckBox Header Column For DataGridView
    http://www.codeproject.com/KB/grid/CheckBoxHeaderCell.aspx

    這篇有幫助嗎...
    • 已標示為解答 Jude13 2009年7月22日 上午 02:41
    2009年7月21日 上午 10:46
  • to Terry:
    謝謝你的回覆,但是我的是winform
    其實我的問題就是 可以在ColumnHeader上產生一個checkbox
    如同yahoo信箱的刪除功能一樣

    感謝您

    不好意思沒看清楚問題,因為您提到像YAHOO MAIL一樣,我直覺以為您做的是Web Form。
    2009年7月22日 上午 01:23
  • to Terry:
    其實是我沒有描述清楚才會這樣
    不管怎樣 感謝您熱心的幫助。
    也謝謝Joe提供的文章 幫助很大 謝謝
    2009年7月22日 上午 02:43