乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      DataList和Repeater里的自定義button控件的使用

       昵稱10525020 2012-10-12
      DataList和Repeater里的自定義button控件的使用


      列表數(shù)據(jù)和中繼器 自定義按鈕控件的使用

      學(xué)習(xí)內(nèi)容:為ItemCommand event創(chuàng)建一個(gè)event handler將服務(wù)器端代碼和點(diǎn)擊button關(guān)聯(lián)起來(lái)。

          DataList和Repeater可以在templates里包含很多Buttons, LinkButtons, ImageButtons。這些button被點(diǎn)時(shí)會(huì)引起postback,并激發(fā)ItemCommand事件。為ItemCommand event創(chuàng)建一個(gè)event handler可以將服務(wù)器端代碼和點(diǎn)擊button關(guān)聯(lián)起來(lái)。在這個(gè)event handler里首先檢查傳入的CommandName的值來(lái)判斷是哪個(gè)button被點(diǎn)了。其它另外的信息可以通過(guò)CommandArgument屬性來(lái)提供。 //類CommandEventArgs有兩個(gè)公共屬性,CommandName(用來(lái)獲取命令的名稱)和CommandArgument(用來(lái)獲取命令的參數(shù))。

          任何時(shí)候,當(dāng)DataList或Repeater的template里的Button, LinkButton, ImageButton被點(diǎn)時(shí),會(huì)產(chǎn)生postback,并激發(fā)DataList或Repeater的ItemCommand事件。除了ItemCommand外,如果button的CommandName 設(shè)為(“Delete”, “Edit”, “Cancel”, “Update”, “Select”)其中一個(gè)時(shí),DataList會(huì)激發(fā)另外一個(gè)事件。但I(xiàn)temCommand都是會(huì)被激發(fā)的。

          當(dāng)DataList或Repeater的template里的Button被點(diǎn)時(shí),通常需要獲取哪個(gè)button被點(diǎn)了(一個(gè)控件里可能有多個(gè)button,比如編輯和刪除),還可能需要一些其它的信息(比如那些button被點(diǎn)的item(項(xiàng))的主鍵)。Button, LinkButton, ImageButton提供了兩個(gè)屬性,它們的值可以傳給ItemCommand event handler:

      1. CommandName –表示template里每個(gè)button身份的字符串。 
      2. CommandArgument – 通常用來(lái)保存一些值,比如主鍵。

       

          配置ObjectDataSource
          添加一個(gè)DataList或Repeater,再添加一個(gè)CategoriesDataSource的ObjectDataSource做數(shù)據(jù)源,用CategoriesBLL類的GetCategories()方法配置它。Visual Studio會(huì)根據(jù)數(shù)據(jù)源為DataList創(chuàng)建一個(gè)默認(rèn)的ItemTemplate,而Repeater的templates需要手工定義。

      當(dāng)點(diǎn)“Show Products” LinkButton 時(shí)執(zhí)行服務(wù)器端代碼
          將LinkButton的CommandName設(shè)為“ShowProducts”,并將當(dāng)前記錄的主鍵– CategoryID –通過(guò)綁定語(yǔ)法綁定到
      CommandArgument。(CategoryArgument='<%# Eval("CategoryID") %>'//在每一項(xiàng)中將CategoryID單向賦給CategoryArgument

          當(dāng)button被點(diǎn)時(shí),產(chǎn)生postback并激發(fā)DataList或Repeater的ItemCommand事件。Button的CommandName和CommandArgument值被傳到event handler里。

          為ItemCommand事件創(chuàng)建一個(gè)event handler,注意event handler的第二個(gè)參數(shù)(名字為e)。這個(gè)參數(shù)的類型為RepeaterCommandEventArgs,它有以下4個(gè)屬性:

      1. CommandArgument – 被點(diǎn)的 button’的CommandArgument property 的值 
      2. CommandName – button’的CommandName property 的值 
      3. CommandSource – 被點(diǎn) button 的引用 
      4. Item – 包含被點(diǎn)button 的 RepeaterItem的引用; 每條綁定到Repeater的記錄被表明為一個(gè) RepeaterItem 
          由于選擇的category的CategoryID通過(guò)CommandArgument傳入,可以在ItemCommand event handler里獲取與之相關(guān)的products。這些products在ItemTemplate(添加過(guò)了的)里綁定到一個(gè)BulletedList。剩下的事就是添加BulletedList,在ItemCommand event handler里引用它,然后將選擇的category的products綁定到BulletedList(詳細(xì)介紹見(jiàn)下面MSDN中內(nèi)容)

          注意:DataList的ItemCommand event handler傳入了一個(gè)DataListCommandEventArgs類型的對(duì)象,它提供和RepeaterCommandEventArgs 一樣的4個(gè)屬性。
          顯示選擇的Category的 Products
          使用BulletedList。回到CustomButtons.aspx page頁(yè)的聲明代碼,在“Show Products” LinkButton后添加一個(gè)BulletedList。ItemCommand event handler里通過(guò)e.Item.FindControl("ProductsInCategory")引用這個(gè)控件,并與products綁定。

      C#
      protected void Categories_ItemCommand(object source, RepeaterCommandEventArgs e)
      {
      if (e.CommandName == "ShowProducts")
          {
              // Determine the CategoryID
              int categoryID = Convert.ToInt32(e.CommandArgument);
              // Get the associated products from the ProudctsBLL and bind 
              // them to the BulletedList
              BulletedList products =(BulletedList)e.Item.FindControl("ProductsInCategory");
              ProductsBLL productsAPI = new ProductsBLL();
              products.DataSource =productsAPI.GetProductsByCategoryID(categoryID);
              products.DataBind());
          }
      }
          在ItemCommand event handler里執(zhí)行任何操作前,需要先檢查傳入的CommandName。由于ItemCommand event handler在任何button被點(diǎn)時(shí)都會(huì)執(zhí)行,如果在template里有多個(gè)button時(shí)需要通過(guò)CommandName的值來(lái)辨別需要采取什么操作。在前面 DataList里使用button 的教程里,通過(guò)DataKeys集合來(lái)獲取給定item的主鍵。這個(gè)方法在DataList里很好用,但是Repeater沒(méi)有DataKeys屬性。因此需要換一種方法來(lái)提供主鍵的值,比如通過(guò)button的 CommandArgument,或者在template使用一個(gè)隱藏的Label,然后通過(guò)e.Item.FindControl("LabelID")在ItemCommand event handler里讀出它的值。

          注意:如果需要修改這個(gè)報(bào)表的行為,比如一次只列出一個(gè)category的products,僅僅只需要將BulletedList的EnableViewState屬性設(shè)為False。

          來(lái)自MSDN中的內(nèi)容:

          BulletedList類:創(chuàng)建一個(gè)控件,該控件生成一個(gè)采用項(xiàng)目符號(hào)格式的項(xiàng)列表。 命名空間:System.Web.UI.WebControls
      備注
          使用 BulletedList 控件來(lái)創(chuàng)建一個(gè)采用項(xiàng)目符號(hào)格式的項(xiàng)列表。若要指定希望顯示在 BulletedList 控件中的個(gè)別列表項(xiàng),請(qǐng)?jiān)?BulletedList 控件的開(kāi)始標(biāo)記和結(jié)束標(biāo)記之間為每個(gè)項(xiàng)放置一個(gè) ListItem 對(duì)象。

          若要指定 BulletedList 控件中用于顯示列表項(xiàng)的項(xiàng)目符號(hào)類型,請(qǐng)將 BulletStyle 屬性設(shè)置為 BulletStyle 枚舉定義的項(xiàng)目符號(hào)類型之一。下表列出了可用的項(xiàng)目符號(hào)樣式。

      項(xiàng)目符號(hào)樣式 
      說(shuō)明 
      NotSet 未設(shè)置。 
      Numbered 數(shù)字。 
      LowerAlpha 小寫(xiě)字母。 
      UpperAlpha 大寫(xiě)字母。 
      LowerRoman 小寫(xiě)羅馬數(shù)字。 
      UpperRoman 大寫(xiě)羅馬數(shù)字。 
      Disc 實(shí)心圓。 
      Circle 圓圈。 
      Square 實(shí)心正方形。 
      CustomImage 自定義圖像。

       

      圖:BulletedList樣式

          使用 FirstBulletNumber 屬性來(lái)指定排序 BulletedList 控件中開(kāi)始列表項(xiàng)編號(hào)的值。如果 BulletStyle 屬性設(shè)置為 Disc、Square、Circle 或 CustomImage 字段,則忽略分配給 FirstBulletNumber 屬性的值。如果將 BulletStyle 屬性設(shè)置為 CustomImage 的值,以指定項(xiàng)目符號(hào)的自定義圖像,則您還必須設(shè)置 BulletImageUrl 屬性以指定圖像文件的位置。

       

          若要指定 BulletedList 中列表項(xiàng)的顯示行為,請(qǐng)將 DisplayMode 屬性設(shè)置為 BulletedListDisplayMode 枚舉定義的值之一。定義的顯示行為是 Text、HyperLink 和 LinkButton。

          單擊超鏈接時(shí),將定位到相應(yīng)的 URL。使用 Value 屬性指定超鏈接定位到的 URL。使用 Target 屬性指定框架或窗口,單擊超鏈接時(shí),將在該框架或窗口顯示定位到的網(wǎng)頁(yè)。

          當(dāng) DisplayMode 屬性設(shè)置為 LinkButton 時(shí),BulletedList 控件將列表項(xiàng)顯示為鏈接,單擊這些鏈接將回發(fā)到服務(wù)器。若要以編程方式控制單擊鏈接按鈕時(shí)執(zhí)行的操作,請(qǐng)為 Click 事件提供事件處理程序。請(qǐng)注意,SelectedIndex 和 SelectedItem 屬性是從 ListControl 類繼承而來(lái)的,并且不適用于 BulletedList 控件。使用 BulletedListEventArgs 類的事件數(shù)據(jù)來(lái)確定單擊的 BulletedList 中的鏈接按鈕的索引。

          BulletedList 控件也支持?jǐn)?shù)據(jù)綁定。若要將 BulletedList 綁定到數(shù)據(jù)源,可以使用提供的任意數(shù)據(jù)綁定機(jī)制。

       

       

          Button.CommandArgument 屬性獲取或設(shè)置可選參數(shù),該參數(shù)與關(guān)聯(lián)的 CommandName一起被傳遞到 Command 事件。命名空間:System.Web.UI.WebControls
      備注
          使用 CommandArgument 屬性來(lái)指定補(bǔ)充 CommandName 屬性的參數(shù)。
      注意 
          盡管可以單獨(dú)設(shè)置 CommandArgument 屬性,但該屬性通常只在也設(shè)置了 CommandName 屬性時(shí)才使用。
          CommandArgument 屬性通過(guò)使您可以提供有關(guān)要執(zhí)行的命令的附加信息,對(duì) CommandName 屬性加以補(bǔ)充。例如,如果將 CommandName 屬性設(shè)置為 Sort,并將 CommandArgument 屬性設(shè)置為 Ascending,則指定了按升序進(jìn)行排序的命令。
      類CommandEventArgs有兩個(gè)公共屬性,CommandName(用來(lái)獲取命令的名稱)和CommandArgument(用來(lái)獲取命令的參數(shù))。



        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多