日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

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

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


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

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

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

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

    當DataList或Repeater的template里的Button被點時,通常需要獲取哪個button被點了(一個控件里可能有多個button,比如編輯和刪除),還可能需要一些其它的信息(比如那些button被點的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)建一個默認的ItemTemplate,而Repeater的templates需要手工定義。

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

    當button被點時,產(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 – 被點的 button’的CommandArgument property 的值 
2. CommandName – button’的CommandName property 的值 
3. CommandSource – 被點 button 的引用 
4. Item – 包含被點button 的 RepeaterItem的引用; 每條綁定到Repeater的記錄被表明為一個 RepeaterItem 
    由于選擇的category的CategoryID通過CommandArgument傳入,可以在ItemCommand event handler里獲取與之相關(guān)的products。這些products在ItemTemplate(添加過了的)里綁定到一個BulletedList。剩下的事就是添加BulletedList,在ItemCommand event handler里引用它,然后將選擇的category的products綁定到BulletedList(詳細介紹見下面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被點時都會執(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屬性設為False。

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

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

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

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

 

圖:BulletedList樣式

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

 

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

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

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

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

 

 

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



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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多