Gridview 表頭加入checkbox的方法

在近在做一個Asp.net項目,想在GridView的表頭中加入一個checkbox來過濾表中的數據。沒想到就這麼個小小的功能還遇到了一大堆的問題:

(1)、在數據行中加入checkbox倒是很簡單,但在網上找了半天,就是找不到如何加入到表頭。

(2)、無法觸發checkbox的CheckedChanged事件,偌大的網絡就是沒有答案。

(3)、這個問題最讓我納悶,checkbox硬是勾選不上,對於這樣的問題網絡上更是沒有留下一絲痕跡。

   這樣的問題對於我一個第一次做asp.net項目的菜鳥來說,確實比較難呀,但經過我的不懈努力還是被我解決了,興奮之餘想到給同樣苦悶着的同志們分享:

問題1、

       把這一列轉化爲TemplateField後,aspx頁面源碼會生成如下代碼

                <asp:TemplateField HeaderText="是否購買">
                    <EditItemTemplate>
                        <asp:DropDownList ID="DropDownList1" runat="server" DataTextField=<%# Bind("IsBuy") %>>
                            <asp:ListItem  Text="購買" Value="1" ></asp:ListItem>
                            <asp:ListItem  Text="自備" Value="0" ></asp:ListItem>
                        </asp:DropDownList>
                    </EditItemTemplate>
                    <ItemStyle HorizontalAlign="Center" Width="80px" />
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("IsBuy") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
   第一做asp.net項目一開始當然什麼也不懂,在網上找不到幫助這號盯着上面的代碼發呆,發呆的過程中我發現裏面有<EditItemTemplate><ItemTemplate> ,能不能添加Header之類的標籤呢,試一下吧,於是添加了下面的子標籤
                    <HeaderTemplate>
                        <asp:CheckBox ID= "CbHeadIsBuy" runat ="server" Text = "顯示購買" OnCheckedChanged="CbHeadIsBuy_CheckedChanged"/>
                    </HeaderTemplate>
這下checkbox是出來了。下面的問題也出來了。

問題2、

    OnCheckedChanged事件不能觸發呀。又在網上到處尋找,好像從來沒人這樣做似的,根本找不到答案,也別笑話我們這些菜鳥,MSDN的編排方式確實很不適合我們中國人的使用習慣,沒辦法了只好又發呆,突然想起以前做DropDownList的時候有個什麼AutoPostBack的屬性,加進去設成true試一試,哎呀!NND,果真就好了,看來是的好好看本asp.net本質方面的書好好研究一下了。(這個問題讓我發呆的另一個原因是,第一次使用Checkbox,GridView的複雜性,也讓我迷失了方向)。

問題3、

對於第3個問題我只給出原因和我的解決方法,

原因:checkbox硬是勾選不上是應爲我在OnCheckedChanged方法中調用了GridView的DataBin方法,這個方法始終使Checkbox的checked值爲初始值。

   下面是Checkbox標籤的最終編碼:

                        <asp:CheckBox ID= "CbHeadIsBuy" runat ="server" Text = "顯示購買" AutoPostBack="true" OnCheckedChanged="CbHeadIsBuy_CheckedChanged" Checked=<%# Convert.ToBoolean(HfCheckIsBuy.Value) %>/>

綁定一個HiddenField到checkbox的checked屬性。我知道我這個方法不是最好的。希望有朋友給出更好的解決方案。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章