小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

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


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

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

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

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

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

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

 

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

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

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

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

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

    注意:DataList的ItemCommand event handler傳入了一個DataListCommandEventArgs類型的對象,它提供和RepeaterCommandEventArgs 一樣的4個屬性。
    顯示選擇的Category的 Products
    使用BulletedList。回到CustomButtons.aspx page頁的聲明代碼,在“Show Products” LinkButton后添加一個BulletedList。ItemCommand event handler里通過e.Item.FindControl("ProductsInCategory")引用這個控件,并與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)時都會執(zhí)行,如果在template里有多個button時需要通過CommandName的值來辨別需要采取什么操作。在前面 DataList里使用button 的教程里,通過DataKeys集合來獲取給定item的主鍵。這個方法在DataList里很好用,但是Repeater沒有DataKeys屬性。因此需要換一種方法來提供主鍵的值,比如通過button的 CommandArgument,或者在template使用一個隱藏的Label,然后通過e.Item.FindControl("LabelID")在ItemCommand event handler里讀出它的值。

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

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

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

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

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

 

圖:BulletedList樣式

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

 

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

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

    當(dāng) DisplayMode 屬性設(shè)置為 LinkButton 時,BulletedList 控件將列表項顯示為鏈接,單擊這些鏈接將回發(fā)到服務(wù)器。若要以編程方式控制單擊鏈接按鈕時執(zhí)行的操作,請為 Click 事件提供事件處理程序。請注意,SelectedIndex 和 SelectedItem 屬性是從 ListControl 類繼承而來的,并且不適用于 BulletedList 控件。使用 BulletedListEventArgs 類的事件數(shù)據(jù)來確定單擊的 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 屬性來指定補(bǔ)充 CommandName 屬性的參數(shù)。
注意 
    盡管可以單獨(dú)設(shè)置 CommandArgument 屬性,但該屬性通常只在也設(shè)置了 CommandName 屬性時才使用。
    CommandArgument 屬性通過使您可以提供有關(guān)要執(zhí)行的命令的附加信息,對 CommandName 屬性加以補(bǔ)充。例如,如果將 CommandName 屬性設(shè)置為 Sort,并將 CommandArgument 屬性設(shè)置為 Ascending,則指定了按升序進(jìn)行排序的命令。
類CommandEventArgs有兩個公共屬性,CommandName(用來獲取命令的名稱)和CommandArgument(用來獲取命令的參數(shù))。



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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多