我們先來看一個簡單的例子:
- <% @ Page Language="C#" %>
- <% @ Import Namespace="System.Data" %>
- <Script Language="C#" Runat="Server">
- public void Page_Load(Object src,EventArgs e)
- {
- //首先建立一個數組
- ArrayList arr=new ArrayList();
- arr.Add("飛刀");
- arr.Add("Zsir");
- arr.Add("大風");
- arr.Add("布丁");
- arr.Add("亞豪");
-
- //將數組捆綁到DropDownList控件上去
- DDL.DataSource = arr;
- DDL.DataBind();
- }
- </script>
- <html>
- <head>
- <title></title>
- </head>
- <body>
- <asp:DropDownList id="DDL" runat="server" />
- </body>
- </html>
我們在代碼中可以看到我們建立了一個DropDownList,但是他沒有<asp:ListItem>屬性,而我們從最后的顯示中依然可以看到我們所列出的選項。
這里就是我們用DataBind的結果,在Page_Load方法中我們建立了一個數組(ArrayList),并通過DataBind方法將這個數組捆綁到了DropDownList控件中,使得DropDownList最后有數據顯示:),怎么樣對Bind有一定感性認識了吧。下面我們開始正式講解
其實DataBind(),不僅能對控件進行捆綁,而且還能夠對頁面中屬性,方法進行捆綁,甚至整個頁面都可以捆綁。比如,調用Page.DataBind()方法或者直接使用DataBind(),那么整個頁面都將被捆綁,所有的數據全在監視之下。下面的例子,我們將使用DataBind方法來捆綁DropDownList,并獲得其中的數據
- <% @ Page Language="C#" %>
- <% @ Import Namespace="System.Data" %>
- <Script Language="C#" Runat="Server">
- public void sub_Click(Object sender,EventArgs e)
- {
- Page.DataBind();
- }
- </script>
- <html>
- <head>
- <title></title>
- </head>
- <body>
- <form runat=server>
- <asp:DropDownList id="DDL" runat="server" >
- <asp:ListItem>ASP技術</asp:ListItem>
- <asp:ListItem selected>ASP.Net技術</asp:ListItem>
- <asp:ListItem>JSP技術</asp:ListItem>
- <asp:ListItem>PHP技術</asp:ListItem>
- <asp:ListItem>組件技術</asp:ListItem>
- </asp:DropDownList>
- <br>
- 你現在選擇的是:<font color=red><%# DDL.SelectedItem.Text %></font>區
- <br>
- <asp:Button id="sub" Text="提交" Type="submit" runat=server OnClick="sub_Click" />
- </form>
- </body>
- </html>
我們看到,那個紅色的[JSP技術],我們并沒有使用什么控件,但是他卻能正確的顯示我們的選擇結果,這個是就捆綁的結果,注意<%# DDL.SelectedItem.Text %>這句話,正是它讓我們取得了捆綁的數據。它看上去是不是像我們熟悉的<%=...%>這個語句,它們的使用方法相差不多,只是<%=...%>是在程序執行時調用,<%#... %>是在DataBind()方法之后被調用。以后我們還能經常看到他的身影,呵呵。
接收Bind的控件,一般有DropDownList,DataList,DataGrid,ListBox這些集合性質的控件,而被捆綁的主要是ArrayList(數組),Hashtable(哈稀表),DataView(數據視圖),DataReader這四個,以后我們就可以對號入座,不會出現DataTable被捆綁的錯誤了:)
講到Bind,就不能說一下DataBinder.Eval()方法.
我們在使用DataBind,獲得的數據,系統會將其默認為String(字符串),這對我們平時的輸出顯示提供了極大的方便,但是我們并不是每次都需要string類型,有時我們就需要Boolean,Int32這些類型。此時我們就需要轉化類型了。可能大家最先想到的是String.Format方法,這是最好的,但是用法過于煩。所以最好不要這樣啦。我們可以用DataBinder.Eval()方法,他的格式是:
DataBinder.Eval(Container.DataItem,"轉換的類型","格式")
最后一個"格式"是可選的,一般不用去管他,Container.DataItem是捆綁的數據項,"轉換類型"指的是Integer,String,Boolean這一類東西.
有了它,我們處理數據就更加方便
最后我們來看一個例子,關于DataView的捆綁,呵呵,老是用DropDownList煩了,這次用DataGrid,在這個例子中我們可以看到"表是怎樣煉成的"
- <% @ Page Language="C#" %>
- <% @ Import Namespace="System.Data" %>
- <Script Language="C#" Runat="Server">
- public void Page_Load(Object src,EventArgs e)
- {
- int i;
- //建立表數據
- DataTable dt=new DataTable();
- DataRow dr;
- //建立Column例,可以指明例的類型,這里用的是默認的string
- dt.Columns.Add(new DataColumn("編號"));
- dt.Columns.Add(new DataColumn("用戶名"));
- for(i=1;i<8;i++)
- {
- dr=dt.NewRow();
- dr[0]=Int32.ToString(i);
- dr[1]="aspcn"+Int32.ToString(i);
- dt.Rows.Add(dr);
- }
- //捆綁
- DG1.DataSource = new DataView(dt);
- DG1.DataBind();
-
-
- }
- </script>
- <html>
- <head>
- <title></title>
- </head>
- <body>
- <asp:DataGrid id="DG1" runat=server align=center HeaderStyle-BackColor="#aaaadd" />
-
- </body>
- </html>