婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > 在ASP.NET 2.0中操作數(shù)據(jù)之五十:為GridView控件添加Checkbox

在ASP.NET 2.0中操作數(shù)據(jù)之五十:為GridView控件添加Checkbox

熱門標(biāo)簽:網(wǎng)絡(luò)電話外呼系統(tǒng)上海 400電話辦理怎么樣 西寧呼叫中心外呼系統(tǒng)線路商 百應(yīng)電話機(jī)器人外呼系統(tǒng) 外呼電話機(jī)器人成本 地圖標(biāo)注軟件免費(fèi)下載 臨沂智能電話機(jī)器人加盟 聯(lián)通官網(wǎng)400電話辦理 蘇州如何辦理400電話

導(dǎo)言:

  在前面的教程里我們探討了如何為GridView控件添加radio buttons列。當(dāng)用戶最多只能選擇一項(xiàng)數(shù)據(jù)時(shí),我們可以在用戶界面里添加radio buttons列,而有時(shí)候,我們需要選擇任意多項(xiàng)數(shù)據(jù)。比如,基于Web的郵箱客戶端列出了一系列的郵件,及一列checkboxes,用戶可選擇任意封郵件并執(zhí)行相同的操作,比如移動(dòng)到另一個(gè)文件夾或?qū)⒅畡h除。

  在本教程,我們將探討如何添加checkboxes列,以及發(fā)生頁面回傳后如何確定到底選擇了哪些checkboxes。特別的,我們將練習(xí)一個(gè)類似于基于web的郵箱客戶端用戶界面。實(shí)例將包含一個(gè)啟用了分頁功能的GridView,用于列出表Products中的產(chǎn)品,每行記錄包含一個(gè)checkbox(見圖1)。當(dāng)點(diǎn)擊“Delete Selected Products”按鈕時(shí),刪除選中的產(chǎn)品。


圖1:每個(gè)Product Row包含一個(gè)Checkbox

第1步:添加一個(gè)啟用分頁的GridView控件展示產(chǎn)品信息

  在考慮添加checkboxes列前,我們先創(chuàng)建一個(gè)展示產(chǎn)品的GridView控件并啟用分頁。在文件夾EnhancedGridView里打開CheckBoxField.aspx頁面并進(jìn)入設(shè)計(jì)模式,從工具箱拖一個(gè)GridView到頁面,設(shè)其ID為Products。下一步,將其綁定到一個(gè)名為ProductsDataSource的ObjectDataSource控件。該ObjectDataSource控件使用ProductsBLL類,調(diào)用GetProducts()方法返回?cái)?shù)據(jù)。因?yàn)楸纠腉ridView控件是只讀的,在UPDATE, INSERT和DELETE選項(xiàng)卡的下拉列表里選“(None)”。


圖2:創(chuàng)建一個(gè)名為ProductsDataSource的ObjectDataSource控件


圖3:設(shè)置該ObjectDataSource控件調(diào)用GetProducts()方法獲取數(shù)據(jù)


圖4:在UPDATE, INSERT和DELETE選項(xiàng)卡的下拉列表里選“(None)”。

  完成設(shè)置后,Visual Studio會(huì)自動(dòng)為相關(guān)數(shù)據(jù)域(data fields)創(chuàng)建BoundColumns及一個(gè)CheckBoxColumn。就像我們?cè)谇懊娴慕坛套龅哪菢樱瑢⒊?ProductName, CategoryName和UnitPrice外的其它BoundFields刪除,并將相關(guān)HeaderText屬性設(shè)置為“Product”, “Category”和“Price”。將UnitPrice BoundField格式化為貨幣形式。在智能標(biāo)簽里選擇“Enable Paging”啟用GridView的分頁功能。

  為了在用戶界面里可以刪除選中的產(chǎn)品,在GridView下面添加一個(gè)Button Web控件,設(shè)其ID為DeleteSelectedProducts,Text屬性為“Delete Selected Products”。在本例中我們不會(huì)直接從數(shù)據(jù)庫刪除數(shù)據(jù),而是顯示一條消息,說明要?jiǎng)h除的是什么產(chǎn)品。因此,在按鈕下面添加一個(gè)Label Web控件,設(shè)其ID為DeleteResults,清空其Text屬性, 將Visible和EnableViewState屬性都設(shè)為false。

做完上述修改后,GridView, ObjectDataSource, Button和Label的聲明代碼應(yīng)和下面的差不多:

p>
 asp:GridView ID="Products" runat="server" AutoGenerateColumns="False"
  DataKeyNames="ProductID" DataSourceID="ProductsDataSource"
  AllowPaging="True" EnableViewState="False">
  Columns>
   asp:BoundField DataField="ProductName" HeaderText="Product"
    SortExpression="ProductName" />
   asp:BoundField DataField="CategoryName" HeaderText="Category"
    ReadOnly="True" SortExpression="CategoryName" />
   asp:BoundField DataField="UnitPrice" DataFormatString="{0:c}"
    HeaderText="Price" HtmlEncode="False"
    SortExpression="UnitPrice" />
  /Columns>
 /asp:GridView>

 asp:ObjectDataSource ID="ProductsDataSource" runat="server"
  OldValuesParameterFormatString="original_{0}"
  SelectMethod="GetProducts" TypeName="ProductsBLL">   
 /asp:ObjectDataSource>
/p>
p>
 asp:Button ID="DeleteSelectedProducts" runat="server"
  Text="Delete Selected Products" />
/p>
p>
 asp:Label ID="DeleteResults" runat="server" EnableViewState="False"
  Visible="False">/asp:Label>
/p>

花幾分鐘在瀏覽器里觀看頁面(見圖5),你可以看到前10個(gè)產(chǎn)品的name, category以及price。


圖5:顯示前10個(gè)產(chǎn)品的name, category以及price

 第2步:添加一個(gè)Checkboxes列

  由于ASP.NET 2.0 包含一個(gè)CheckBoxField,我們也許自然會(huì)想到用它來為GridView控件添加一個(gè)Checkboxes列。然而,并不是那樣回事。因?yàn)镃heckBoxField是專門設(shè)計(jì)來與布爾數(shù)據(jù)域(Boolean data field)打交道。
也就是說,當(dāng)數(shù)據(jù)域的值可以用來判斷是否選中了checkbox時(shí),CheckBoxField才派地上用場(chǎng)。CheckBoxField不能正確的包含一列未選中的checkboxes。

  作為替換,我們必須添加一個(gè)模板,并在其ItemTemplate模式里添加一個(gè)CheckBox Web控件。我們要在GridView控件Products里添加一個(gè)模板,并放在最左邊。在GridView的智能標(biāo)簽里點(diǎn)“編輯模板”,在ItemTemplate模式里添加一個(gè)CheckBox Web控件,設(shè)其ID為ProductSelector。


圖6:在模板的ItemTemplate模式里添加一個(gè)名為ProductSelector的CheckBox Web控件

添加模板和CheckBox Web控件后,每一行記錄將包含一個(gè)CheckBox按鈕,如圖7所示:


圖7:每個(gè)產(chǎn)品行包含一個(gè)CheckBox按鈕

第3步:頁面回傳后確定點(diǎn)擊了哪些Checkboxes按鈕

  現(xiàn)在我們已經(jīng)創(chuàng)建了一個(gè)checkboxes列,但在頁面發(fā)生回傳后還不能確定點(diǎn)擊了哪些Checkboxes按鈕,但當(dāng)點(diǎn)擊“Delete Selected Products”按鈕時(shí),我們需要確定要?jiǎng)h除的是哪些產(chǎn)品,也即點(diǎn)擊了哪些Checkboxes按鈕。

  我們可以運(yùn)用GridView的Rows屬性訪問其數(shù)據(jù)行(data rows),編程訪問該記錄行的CheckBox控件,根據(jù)其Checked屬性來判斷是否選中了該按鈕。

為名為DeleteSelectedProducts的Button Web控件的Click事件創(chuàng)建一個(gè)事件處理器,添加如下代碼:

protected void DeleteSelectedProducts_Click(object sender, EventArgs e)
{
 bool atLeastOneRowDeleted = false;

 // Iterate through the Products.Rows property
 foreach (GridViewRow row in Products.Rows)
 {
  // Access the CheckBox
  CheckBox cb = (CheckBox)row.FindControl("ProductSelector");
  if (cb != null  cb.Checked)
  {
   // Delete row! (Well, not really...)
   atLeastOneRowDeleted = true;

   // First, get the ProductID for the selected row
   int productID =
    Convert.ToInt32(Products.DataKeys[row.RowIndex].Value);

   // "Delete" the row
   DeleteResults.Text += string.Format(
    "This would have deleted ProductID {0}br />", productID);
  }
 }

 // Show the Label if at least one row was deleted...
 DeleteResults.Visible = atLeastOneRowDeleted;
}

  GridView控件的Rows屬性返回構(gòu)成GridView數(shù)據(jù)行的GridViewRow實(shí)例集合。而foreach()循環(huán)將遍歷集合中的每一個(gè)實(shí)例。在一個(gè)GridViewRow對(duì)象中,我們通過使用row.FindControl("controlID")的形式來訪問該行記錄的CheckBox按鈕。如果選擇了該按鈕,從DataKeys集合里獲取與該行記錄相對(duì)應(yīng)的ProductID值。

  在本例,我們僅僅是在Label控件DeleteResults里顯示相關(guān)提示信息,而在實(shí)際的應(yīng)用程序中,我們應(yīng)該調(diào)用ProductsBLL類的DeleteProduct(productID)方法。

  添加完上述事件處理器后,點(diǎn)擊“Delete Selected Products”按鈕,將會(huì)顯示那些被選中的產(chǎn)品的ProductID值。


圖8:當(dāng)點(diǎn)擊“Delete Selected Products”時(shí),將列出所選產(chǎn)品的ProductID值

第4步:添加“Check All”和“Uncheck All”按鈕

  如果用戶想刪除當(dāng)前頁面上的所有產(chǎn)品,則必須點(diǎn)擊每行的checkbox按鈕,稍
顯麻煩。我們可以添加一個(gè)“Check All”按鈕,當(dāng)點(diǎn)擊該按鈕時(shí)可以選中頁面上的所有checkbox按鈕。反之,添加一個(gè)“Uncheck All”按鈕。

  在頁面上添加2個(gè)Button Web控件,放在GridView的上面。設(shè)第一個(gè)的ID為CheckAll,Text屬性為“Check All”; 設(shè)第二個(gè)的ID為UncheckAll,Text屬性為“Uncheck All”,如下:

asp:Button ID="CheckAll" runat="server" Text="Check All" />
nbsp;
asp:Button ID="UncheckAll" runat="server" Text="Uncheck All" />

  接著,在后臺(tái)代碼類(code-behind class)里創(chuàng)建一個(gè)名為ToggleCheckState(checkState)的方法。調(diào)用該方法時(shí),其遍歷GridView控件Products的Rows集合,根據(jù)傳入的參數(shù)checkState對(duì)每個(gè)CheckBox的Checked屬性賦值。

private void ToggleCheckState(bool checkState)
{
 // Iterate through the Products.Rows property
 foreach (GridViewRow row in Products.Rows)
 {
  // Access the CheckBox
  CheckBox cb = (CheckBox)row.FindControl("ProductSelector");
  if (cb != null)
   cb.Checked = checkState;
 }
}

  然后,為button控件CheckAll和UncheckAll創(chuàng)建Click事件處理器,在CheckAll的Click事件處理器中,僅僅簡(jiǎn)單的調(diào)用ToggleCheckState(true); 在UncheckAll的事件處理器中,調(diào)用ToggleCheckState(false),如下:

protected void CheckAll_Click(object sender, EventArgs e)
{
 ToggleCheckState(true);
}

protected void UncheckAll_Click(object sender, EventArgs e)
{
 ToggleCheckState(false);
}

  當(dāng)點(diǎn)擊“Check All”按鈕時(shí),引發(fā)頁面回傳,并選中所有的checkbox按鈕;點(diǎn)擊“Uncheck All”時(shí),棄選所有的checkbox按鈕。圖9為點(diǎn)擊“Check All”按鈕后的界面。


圖9:點(diǎn)“Check All”按鈕選擇所有的Checkbox

  注意:如果要全選或棄選checkbox按鈕的話,我們也可以通過點(diǎn)擊標(biāo)題行(header row)的checkbox來實(shí)現(xiàn),并且在頁面發(fā)生回轉(zhuǎn)后才能生效。完全使用客戶端腳本(client-side script)來執(zhí)行全選或棄選checkbox按鈕,那將是一種更爽的用戶體驗(yàn)。

總結(jié):

  當(dāng)用戶需要在GridView里任意的選擇記錄時(shí),我們可以添加一列checkbox按按鈕。正如本章探究的那樣,在GridView里添加一個(gè)模板,再在模板里添加一個(gè)CheckBox Web控件。如果使用Web控件(對(duì)比上一章,我們直接在模板里注入代碼),在頁面發(fā)生回轉(zhuǎn)后,ASP.NET自動(dòng)的記得選中了或沒選中哪些CheckBox控件。我們也可以編程訪問這些CheckBox,判斷是否選中了某個(gè)CheckBox,或改變其checked狀態(tài)。

  祝編程快樂!

作者簡(jiǎn)介

  本系列教程作者 Scott Mitchell,著有六本ASP/ASP.NET方面的書,是4GuysFromRolla.com的創(chuàng)始人,自1998年以來一直應(yīng)用 微軟Web技術(shù)。大家可以點(diǎn)擊查看全部教程《[翻譯]Scott Mitchell 的ASP.NET 2.0數(shù)據(jù)教程》,希望對(duì)大家的學(xué)習(xí)ASP.NET有所幫助。

您可能感興趣的文章:
  • asp.net 上傳下載輸出二進(jìn)制流實(shí)現(xiàn)代碼
  • asp.net 字符串、二進(jìn)制、編碼數(shù)組轉(zhuǎn)換函數(shù)
  • asp.net(c#)實(shí)現(xiàn)從sqlserver存取二進(jìn)制圖片的代碼
  • asp.net 將一個(gè)圖片以二進(jìn)制值的形式存入Xml文件中的實(shí)例代碼
  • ASP.NET實(shí)現(xiàn)圖片以二進(jìn)制的形式存入數(shù)據(jù)庫
  • asp.net實(shí)現(xiàn)圖片以二進(jìn)制流輸出的兩種方法
  • 在ASP.NET 2.0中操作數(shù)據(jù)之四十九:為GridView控件添加RadioButton
  • 在ASP.NET 2.0中操作數(shù)據(jù)之五十一:從GridView的頁腳插入新記錄
  • 在ASP.NET 2.0中操作數(shù)據(jù)之五十二:使用FileUpload上傳文件
  • 在ASP.NET 2.0中操作數(shù)據(jù)之五十三:在Data Web控件顯示二進(jìn)制數(shù)據(jù)

標(biāo)簽:臨夏 清遠(yuǎn) 海西 甘肅 慶陽 中衛(wèi) 聊城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在ASP.NET 2.0中操作數(shù)據(jù)之五十:為GridView控件添加Checkbox》,本文關(guān)鍵詞  在,ASP.NET,2.0,中,操作,數(shù)據(jù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《在ASP.NET 2.0中操作數(shù)據(jù)之五十:為GridView控件添加Checkbox》相關(guān)的同類信息!
  • 本頁收集關(guān)于在ASP.NET 2.0中操作數(shù)據(jù)之五十:為GridView控件添加Checkbox的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲超碰97人人做人人爱| 偷拍与自拍一区| 一区二区三区四区亚洲| 亚洲男同性视频| 国产成人av一区二区| 91啪在线观看| 欧美精品日韩一本| av在线免费不卡| 精品婷婷伊人一区三区三| 国产大陆精品国产| 亚洲1区2区3区视频| 精品99一区二区| 日本在线不卡视频一二三区| 亚洲欧洲精品一区二区三区不卡 | 成人一级片网址| 亚洲欧美一区二区久久 | 成人av小说网| 精久久久久久久久久久| 日本欧美一区二区在线观看| 一本色道久久综合亚洲aⅴ蜜桃| 国产清纯美女被跳蛋高潮一区二区久久w| 视频在线观看91| 久久精品在线免费观看| 高清av一区二区| 欧美日韩精品福利| 成人美女视频在线观看| 亚洲美女视频一区| 日本一区二区久久| 精品少妇一区二区三区在线播放 | 免费观看一级特黄欧美大片| 久久先锋影音av鲁色资源| 欧美日韩国产中文| 国产色91在线| 欧美精选在线播放| 亚洲一区二区三区四区在线| 欧美日韩一区二区不卡| 91在线小视频| 99久久免费精品高清特色大片| 久久不见久久见中文字幕免费| 夜夜爽夜夜爽精品视频| 欧美国产丝袜视频| 国产亚洲自拍一区| 久久久久久亚洲综合影院红桃| 日韩一区二区三区三四区视频在线观看 | 亚洲伊人色欲综合网| 亚洲高清免费视频| 美美哒免费高清在线观看视频一区二区| 亚洲国产精品一区二区尤物区| 亚洲精品日产精品乱码不卡| 99久久久精品| 99久久亚洲一区二区三区青草| 波多野结衣一区二区三区| 国产成人免费网站| 国模无码大尺度一区二区三区| 欧美精品一区二区三区蜜桃 | 国产精品理论片| 国产精品网站在线| 久久综合九色综合久久久精品综合 | 成人中文字幕电影| 成人av在线资源网站| 国产激情偷乱视频一区二区三区| 国产精品白丝jk白祙喷水网站 | 久久91精品久久久久久秒播| 成人免费在线视频| 亚洲一区二区黄色| 麻豆91在线看| 久久99精品国产麻豆婷婷| 极品少妇一区二区三区精品视频| 久久国产精品露脸对白| 激情成人综合网| 成人免费看黄yyy456| 99精品在线免费| 欧美日韩成人一区| 精品粉嫩超白一线天av| 国产欧美日韩久久| 国产女主播视频一区二区| 一区二区在线观看av| 看电影不卡的网站| 日韩在线播放一区二区| 成人av电影免费在线播放| 美女任你摸久久 | 在线观看中文字幕不卡| 91精品免费在线观看| 欧美日韩高清影院| 国产成人亚洲综合a∨猫咪| 精品写真视频在线观看| 日韩1区2区日韩1区2区| 北条麻妃国产九九精品视频| 91精品国产91久久综合桃花| 久久精品亚洲麻豆av一区二区| 亚洲欧洲韩国日本视频| 午夜激情综合网| 久久99久久精品欧美| 色天使色偷偷av一区二区| 日韩一区和二区| 久久久久久久久久久电影| 欧美成人综合网站| 国产亚洲一区字幕| 精品理论电影在线观看| 中文字幕佐山爱一区二区免费| 久久久噜噜噜久久人人看| 欧美成人艳星乳罩| 亚洲第一搞黄网站| eeuss鲁片一区二区三区| 精品日韩99亚洲| 丁香激情综合五月| 久久久影院官网| 亚洲1区2区3区4区| 欧美视频一区在线| 亚洲婷婷综合色高清在线| 久久精品久久99精品久久| 亚洲图片欧美综合| 成人自拍视频在线观看| 久久伊人中文字幕| 一区二区三区蜜桃| 91视频观看免费| 国产精品视频线看| 日韩精品亚洲专区| 99re热这里只有精品免费视频| 欧美日韩一卡二卡三卡| 亚洲欧美日韩在线不卡| 国产老肥熟一区二区三区| 91精彩视频在线观看| 亚洲精品少妇30p| 91亚洲国产成人精品一区二区三 | 亚洲1区2区3区4区| 91成人网在线| 亚洲欧美另类图片小说| 色视频成人在线观看免| 一二三四区精品视频| 精品一区二区在线看| 久久亚洲一级片| 国产美女精品一区二区三区| 精品久久久久久综合日本欧美| 午夜在线成人av| 欧美群妇大交群中文字幕| 日韩极品在线观看| 精品日韩在线观看| 成人性生交大合| 欧美午夜宅男影院| 天堂一区二区在线| 欧美成人vps| 亚洲国产精品99久久久久久久久 | 久久久777精品电影网影网| 国产精品美女久久久久高潮| 成人精品一区二区三区中文字幕| 国产精品国产三级国产有无不卡 | 99久久亚洲一区二区三区青草| 欧美日韩午夜在线视频| www成人在线观看| 麻豆91在线播放| 日韩一区二区视频| 日韩精品色哟哟| 欧美精品亚洲二区| 久久国产精品免费| 国产精品污污网站在线观看| 国产福利视频一区二区三区| 成人欧美一区二区三区小说| 色呦呦日韩精品| 日本欧美在线观看| 综合欧美亚洲日本| 欧美日本一区二区在线观看| 亚洲成人黄色影院| 久久九九全国免费| 欧美精品一卡二卡| 成年人网站91| 五月综合激情婷婷六月色窝| 欧美精品一区二区三区四区 | 亚洲精品成人在线| 欧美一级欧美三级| 一本高清dvd不卡在线观看| 亚洲欧洲成人av每日更新| 不卡av在线网| 美女国产一区二区| 亚洲激情av在线| 久久久不卡网国产精品一区| 欧美日韩一区三区| 成人av网在线| 国产一区二区三区不卡在线观看 | 国产在线播放一区| 一区二区三区四区激情| 国产日韩亚洲欧美综合| 欧美日韩二区三区| 91在线视频免费91| 日韩黄色免费电影| 亚洲电影视频在线| 亚洲日本va午夜在线电影| 久久老女人爱爱| 欧美挠脚心视频网站| 色欧美乱欧美15图片| 99精品视频一区二区三区| 国产一区二区三区综合| 一二三四区精品视频| 成人激情综合网站| 国产精品系列在线观看| 五月综合激情婷婷六月色窝| 久久久久青草大香线综合精品| 欧美高清在线一区二区| 国产成人亚洲综合色影视| 国产福利精品一区|