亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

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

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

熱門標簽:網絡電話外呼系統上海 400電話辦理怎么樣 西寧呼叫中心外呼系統線路商 百應電話機器人外呼系統 外呼電話機器人成本 地圖標注軟件免費下載 臨沂智能電話機器人加盟 聯通官網400電話辦理 蘇州如何辦理400電話

導言:

  在前面的教程里我們探討了如何為GridView控件添加radio buttons列。當用戶最多只能選擇一項數據時,我們可以在用戶界面里添加radio buttons列,而有時候,我們需要選擇任意多項數據。比如,基于Web的郵箱客戶端列出了一系列的郵件,及一列checkboxes,用戶可選擇任意封郵件并執行相同的操作,比如移動到另一個文件夾或將之刪除。

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


圖1:每個Product Row包含一個Checkbox

第1步:添加一個啟用分頁的GridView控件展示產品信息

  在考慮添加checkboxes列前,我們先創建一個展示產品的GridView控件并啟用分頁。在文件夾EnhancedGridView里打開CheckBoxField.aspx頁面并進入設計模式,從工具箱拖一個GridView到頁面,設其ID為Products。下一步,將其綁定到一個名為ProductsDataSource的ObjectDataSource控件。該ObjectDataSource控件使用ProductsBLL類,調用GetProducts()方法返回數據。因為本例的GridView控件是只讀的,在UPDATE, INSERT和DELETE選項卡的下拉列表里選“(None)”。


圖2:創建一個名為ProductsDataSource的ObjectDataSource控件


圖3:設置該ObjectDataSource控件調用GetProducts()方法獲取數據


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

  完成設置后,Visual Studio會自動為相關數據域(data fields)創建BoundColumns及一個CheckBoxColumn。就像我們在前面的教程做的那樣,將除了 ProductName, CategoryName和UnitPrice外的其它BoundFields刪除,并將相關HeaderText屬性設置為“Product”, “Category”和“Price”。將UnitPrice BoundField格式化為貨幣形式。在智能標簽里選擇“Enable Paging”啟用GridView的分頁功能。

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

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

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個產品的name, category以及price。


圖5:顯示前10個產品的name, category以及price

 第2步:添加一個Checkboxes列

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

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


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

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


圖7:每個產品行包含一個CheckBox按鈕

第3步:頁面回傳后確定點擊了哪些Checkboxes按鈕

  現在我們已經創建了一個checkboxes列,但在頁面發生回傳后還不能確定點擊了哪些Checkboxes按鈕,但當點擊“Delete Selected Products”按鈕時,我們需要確定要刪除的是哪些產品,也即點擊了哪些Checkboxes按鈕。

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

為名為DeleteSelectedProducts的Button Web控件的Click事件創建一個事件處理器,添加如下代碼:

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屬性返回構成GridView數據行的GridViewRow實例集合。而foreach()循環將遍歷集合中的每一個實例。在一個GridViewRow對象中,我們通過使用row.FindControl("controlID")的形式來訪問該行記錄的CheckBox按鈕。如果選擇了該按鈕,從DataKeys集合里獲取與該行記錄相對應的ProductID值。

  在本例,我們僅僅是在Label控件DeleteResults里顯示相關提示信息,而在實際的應用程序中,我們應該調用ProductsBLL類的DeleteProduct(productID)方法。

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


圖8:當點擊“Delete Selected Products”時,將列出所選產品的ProductID值

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

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

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

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

  接著,在后臺代碼類(code-behind class)里創建一個名為ToggleCheckState(checkState)的方法。調用該方法時,其遍歷GridView控件Products的Rows集合,根據傳入的參數checkState對每個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創建Click事件處理器,在CheckAll的Click事件處理器中,僅僅簡單的調用ToggleCheckState(true); 在UncheckAll的事件處理器中,調用ToggleCheckState(false),如下:

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

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

  當點擊“Check All”按鈕時,引發頁面回傳,并選中所有的checkbox按鈕;點擊“Uncheck All”時,棄選所有的checkbox按鈕。圖9為點擊“Check All”按鈕后的界面。


圖9:點“Check All”按鈕選擇所有的Checkbox

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

總結:

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

  祝編程快樂!

作者簡介

  本系列教程作者 Scott Mitchell,著有六本ASP/ASP.NET方面的書,是4GuysFromRolla.com的創始人,自1998年以來一直應用 微軟Web技術。大家可以點擊查看全部教程《[翻譯]Scott Mitchell 的ASP.NET 2.0數據教程》,希望對大家的學習ASP.NET有所幫助。

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

標簽:臨夏 清遠 海西 甘肅 平涼 慶陽 中衛 聊城

巨人網絡通訊聲明:本文標題《在ASP.NET 2.0中操作數據之五十:為GridView控件添加Checkbox》,本文關鍵詞  在,ASP.NET,2.0,中,操作,數據,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《在ASP.NET 2.0中操作數據之五十:為GridView控件添加Checkbox》相關的同類信息!
  • 本頁收集關于在ASP.NET 2.0中操作數據之五十:為GridView控件添加Checkbox的相關信息資訊供網民參考!
  • 推薦文章
    午夜家庭影院| 精品在线免费播放| 日本免费乱理伦片在线观看2018| 日韩专区亚洲综合久久| 精品视频免费观看| 999精品影视在线观看| a级毛片免费观看网站| 免费国产在线视频| 欧美激情影院| 国产国语在线播放视频| 国产精品123| 亚洲天堂在线播放| 精品国产一区二区三区久久久狼| 一级毛片视频播放| 国产91丝袜在线播放0| 精品国产一区二区三区免费 | 日韩专区第一页| 国产网站免费| 日本免费区| 天天做人人爱夜夜爽2020毛片| 国产伦精品一区二区三区无广告 | 国产精品自拍一区| 欧美日本二区| 亚洲 国产精品 日韩| 美女免费精品高清毛片在线视| 精品视频在线观看一区二区三区| 久久精品欧美一区二区| 精品视频在线看 | 欧美大片a一级毛片视频| 国产一区二区精品久久91| 久久国产精品只做精品| 午夜激情视频在线播放| 国产精品自拍亚洲| 久久国产精品永久免费网站| 成人高清免费| 你懂的日韩| 国产91精品系列在线观看| 欧美电影免费看大全| 午夜在线观看视频免费 成人| 日本特黄特黄aaaaa大片| 亚洲精品久久玖玖玖玖| 天天色成人网| 日韩在线观看视频黄| 成人在免费观看视频国产| 国产伦理精品| 精品视频在线观看视频免费视频| 美女免费精品视频在线观看| 欧美a级v片不卡在线观看| 欧美大片一区| 精品视频在线观看视频免费视频| 你懂的国产精品| 99色视频在线| 999精品在线| 国产原创中文字幕| 九九干| 亚洲精品永久一区| 日韩免费片| 免费国产一级特黄aa大片在线| 亚洲精品中文一区不卡| 精品国产亚洲人成在线| 高清一级片| 国产麻豆精品免费密入口| 午夜激情视频在线观看| 成人免费观看视频| 尤物视频网站在线| 国产美女在线观看| 日日夜夜婷婷| 二级片在线观看| 精品久久久久久免费影院| 精品视频在线观看免费| 欧美a级大片| 久久福利影视| 成人在激情在线视频| 国产不卡福利| 九九干| 九九久久99| 国产亚洲精品成人a在线| 久久国产精品只做精品| 九九免费精品视频| 国产不卡精品一区二区三区| 亚飞与亚基在线观看| 国产a视频精品免费观看| 精品久久久久久中文字幕一区| 午夜家庭影院| 日韩av成人| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久久精品成人一区二区三区| 精品在线免费播放| 久久99这里只有精品国产| 美国一区二区三区| 韩国三级香港三级日本三级| 国产视频在线免费观看| 精品国产一区二区三区久久久蜜臀 | 一级女性大黄生活片免费| 国产不卡福利| 国产国语在线播放视频| 国产麻豆精品| 成人a大片在线观看| 国产高清视频免费观看| 一级片片| 99色视频| 午夜在线亚洲| 色综合久久天天综合观看| 99久久网站| 欧美激情一区二区三区视频 | 麻豆网站在线看| 成人免费一级纶理片| 欧美一区二区三区在线观看| 午夜在线亚洲男人午在线| 欧美一区二区三区性| 国产视频一区二区在线播放| 999精品视频在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产不卡在线观看视频| 欧美一级视频免费| 91麻豆精品国产自产在线| 国产激情一区二区三区| 国产伦精品一区二区三区在线观看 | 国产精品1024永久免费视频| 久久福利影视| 精品国产一区二区三区精东影业| 欧美a级大片| 香蕉视频久久| 国产伦久视频免费观看 视频| a级毛片免费观看网站| 午夜在线影院| 91麻豆精品国产综合久久久| 日韩免费片| 国产极品精频在线观看| 香蕉视频久久| 亚洲 欧美 成人日韩| 日本伦理黄色大片在线观看网站| 欧美一级视频高清片| 国产91丝袜高跟系列| 亚欧视频在线| 久久国产影院| 日日爽天天| 二级片在线观看| 欧美另类videosbestsex久久 | 午夜久久网| 国产一级强片在线观看| 国产网站免费| 一级片免费在线观看视频| 午夜在线影院| 亚洲天堂免费| 沈樵在线观看福利| 黄视频网站免费| 日韩中文字幕一区| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 91麻豆tv| 日日夜夜婷婷| 黄视频网站在线免费观看| 国产伦精品一区二区三区在线观看 | 欧美电影免费| 国产成人啪精品视频免费软件| 久久久成人网| 国产精品自拍亚洲| 天天做人人爱夜夜爽2020| 青青久久网| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 精品久久久久久影院免费| 精品久久久久久中文| 99久久精品国产免费| 欧美激情伊人| 亚欧成人乱码一区二区| 黄视频网站在线免费观看| 久久精品免视看国产明星| 久久久成人网| 国产麻豆精品| 91麻豆精品国产高清在线| 美国一区二区三区| 精品视频免费看| 欧美a级片免费看| 国产网站免费| 国产一区二区福利久久| 91麻豆高清国产在线播放| 精品在线观看一区| 久久国产影视免费精品| 你懂的国产精品| 日韩专区第一页| 国产韩国精品一区二区三区| 欧美另类videosbestsex高清| 精品在线观看一区| 999精品影视在线观看| 午夜家庭影院| 国产不卡精品一区二区三区| 欧美电影免费看大全| 久久国产精品自由自在| 一本高清在线| 高清一级做a爱过程不卡视频| 亚欧成人乱码一区二区| 99热视热频这里只有精品| 精品国产亚一区二区三区| 999久久狠狠免费精品| 青青久久网| 91麻豆国产| 亚洲第一页色| 香蕉视频亚洲一级| 国产一区二区精品久久91| 一级女人毛片人一女人|