天天看點

asp.net學習之 資料綁定控件--List資料綁定控件

    繼承自ListControl的清單控件包括了以下幾個:

    BulletedList     -- 顯示清單項,清單項可以為文本、連結按鈕或者是超連結

    checkboxlist    -- 顯示複選框清單

    dropdownlist   -- 顯示下拉框清單

    Listbox           -- 顯示清單框

    RadioButtonlist-- 顯示單選按鈕清單

   以為以上幾個控件都繼承于ListControl,是以它們有一些共通的東西

    1.1 每個控件都有一個選項清單,每個選項都是由ListItem類的一個執行個體。

       其中ListItem類具有以下通用屬性

         ● Attributes:可以在清單項中添加HTML屬性

         ● Enable:可以将清單項置為可用

         ● Selected:可以将清單項标記為選中

         ● Text:顯示的文本

         ●Value:對應的隐藏值

    1.2 都可以綁定要資料源,支援聲明式綁定和程式設計式綁定,聲明式比較簡單,不多述。

       程式設計式綁定不光可以綁定ListItem對象集合外,還可以綁定DataTable中的Columns,可以綁定List<Type>對象。如:

例1:List控件綁定List<Type>對象

<script runat="server">

public class CartItem

{

    private int _id;

    public string _description;

    public int Id {  get { return _id; } }

    public string Description

    {

         get { return _description; }

    }

    public CartItem(int id, string description)

        _id = id;

        _description = description;

}

void Page_Load()

    if (!IsPostBack)

        // Create shopping cart

        List<CartItem> shoppingCart = new List<CartItem>();

        shoppingCart.Add(new CartItem(1, “Notebook Computer”));

        shoppingCart.Add(new CartItem(2, “HD Plasma Television”));

        shoppingCart.Add(new CartItem(3, “Lava Lamp”));

        lstShoppingCart.DataSource = shoppingCart;

        lstShoppingCart.DataBind();

</script>

<asp:ListBox id=”lstShoppingCart” DataTextField=”Description”

       DataValueField=”Id” Runat=”server” />

例2:List控件綁定資料源控件

<asp:DropDownList id=”ddlMovies” DataSourceID=”srcMovies” DataTextField=”Title”

        DataValueField=”Id” Runat=”server” />

<asp:SqlDataSource id=”srcMovies” SelectCommand=”SELECT Id, Title FROM Movies”

        ConnectionString=”<%$ ConnectionStrings:Movies %>” Runat=”server” />

    1.3 以相同的方式确定被選中的項

       通過SelectedIndex、SelectedItem、SelectedValue屬性擷取和設定被選中的項。

    1.4 追加資料項:AppendDataBOundItems屬性

       預設的,當使用DataBind綁定到資料源時,List控件原有的資料會被清空,新的選項會被加入進來,而如果通過設定AppendDataBoundItems為true屬性,就可以在綁定資料源時,保留已經存在的資料項。

    1.5 啟用自動回傳功能: AutoPostBack屬性

       當設定ListControl的AutoPostBack屬性為true時,對List控件中的清單項進行更改,都會導緻List控件的表單自動回傳到伺服器。

    1.6 獲得清單項(ListItem)的集合: Items屬性

       可以直接通路這個集合中的清單項,增加或删除指定清單項或者改變清單項的順序。

例3:通路和修改清單項

protected void btnAdd_Click(object sender, EventArgs e)

    ListItem item = lstAllMovies.SelectedItem;

    if (item != null)

        lstAllMovies.Items.Remove(item);

        lstFavoriteMovies.ClearSelection();   // 清除清單選擇并将所有項的 Selected 屬性設定為 false。

        lstFavoriteMovies.Items.Add(item);

<asp:ListBox id=”lstAllMovies” DataSourceID=”srcMovies” DataTextField=”Title”

<asp:Button id=”btnAdd” Text=”—>” ToolTip=”Add List Item”

        Runat=”server” OnClick=”btnAdd_Click” />

<asp:ListBox id=”lstFavoriteMovies” Runat=”server” />

    RadioButtonList控件有3個屬性可以影響其布局,分别是:

     ● RepeatColumns: 按鈕需要顯示的列數

     ● RepeatDirection: 排列方向,可以賦為Horizontal(橫向)及Vertical(縱向)

     ● RepeatLayout: 單選按鈕是否顯示在一個HTML表格中,可以指派為Table或Flow. 預設為Table

     與DropdownList控件相似,不同的是,可以多選。另外注意的是ListBox的Rows屬性,可以得知一次顯示選擇項的行數

例4:獲得ListBox中選擇項

<script runat=”server”>

protected void btnSubmit_Click(object sender, EventArgs e)

    foreach (ListItem item in lstMovies.Items)

        if (item.Selected)

            lblMovie.Text += “<li>” + item.Text;

<asp:ListBox id=”lstMovies” DataSourceID=”srcMovies” DataTextField=”Title”

        DataValueField=”Id” SelectionMode=”Multiple” Runat=”server” />

<asp:Button id=”btnSubmit” Text=”Submit” OnClick=”btnSubmit_Click” Runat=”server” />

<asp:SqlDataSource id=”srcMovies” SelectCommand=”SELECT Id, Title FROM Movies”

        ConnectionString=”<%$ ConnectionStrings:Movies %>”  Runat=”server” />

    呈現一組複選框清單,可以多選,程式中獲得選擇項的方式同例4的代碼相同。也是通過枚舉來實作。

    其有3個屬性可以影響其布局,分别是RepeatColumns、RepeatDirection、RepeatLayout,用法與RadioButtonList相同。

    可以呈現無序(項目符号)的清單,也可以呈現有序(帶編号)的清單,每個清單項可以為文本、LinkButton或者是一個到其它WEB頁的連結。

    通過BulledStyle屬性可以控制每一個清單項的外觀。屬性可以有以下值:Circle,CustomImage,Disc,LowerAplha…

例5:為清單項添加自定義圖像:

<asp:BulletedList id=”blMovies” DataSourceID=”srcMovies” DataTextField=”Title”

         BulletStyle=”CustomImage” BulletImageUrl=”~/Images/Bullet.gif”   Runat=”server” />

     可以通過DisplayMode屬性修改每個清單項的外觀,屬性接受以下值:

        ● HyperLink: 呈現為一個到其它頁面的連結

        ● LinkButton: 呈現一個LinkButton控件。

        ● Text: 呈現一個簡單文本

例6:為清單項呈現連結

<asp:BulletedList id=”blWebsites” DisplayMode=”HyperLink” Target=”_blank” Runat=”server”>

        <asp:ListItem Text=”Yahoo” Value=”http://www.Yahoo.com” />

        <asp:ListItem Text=”Google” Value=”http://www.Google.com” />

        <asp:ListItem Text=”Deja” Value=”http://www.Deja.com” />

</asp:BulletedList>

     注:BulletedList與其它List控件不同,它不支援屬性SelectedIndex、SelectedItem、SelectedValue。因為它壓根兒無法選擇。

繼續閱讀