黑马程序员---Repeater之DataSource和数据显示小结

------- Windows Phone 7手机开发、 .Net培训、期待与您交流! -------
 
Summary
      Repeater在asp.net中使用率还是挺高的,或因其具备类似For循环一样能遍历数据能力,本次小结其数据源以及数据源怎样在页面上被显示。
Content
一、Repeater要能显示数据,其要有数据源,而了解数据源类型,才能匹配正确的数据源:
        查看MSDN:Repeater 的 DataSource 可以是任何 System.Collections.IEnumerable 集合 (如) 访问数据库的 System.Data.DataView , System.Collections.ArrayList或数组或 IListSource 对象。
只要确保数据类型是上所描述,就可以作为Repeater的数据源,就可以通过Repeater来显示数据。
注:为Repeater指定数据源后,记得绑定数据(eg:this.Repeater1.DataBind();).
二、通过代码来展示数据的显示:
    1.页面运行结果:
2. 后台主要代码:
  
  
  
  
  1. #region 定义List<string>的数据源类型
  2. List<string> testDS1 = new List<string>() { "1", "2" };//初始化数据
  3. this.Repeater1.DataSource = testDS1;//指定数据源
  4. this.Repeater1.DataBind();//绑定数据
  5. #endregion
  6. #region 定义List<person>的数据源类型
  7. List<person> testDS2 = new List<person>() { new person(1, "person1"), new person(2, "person2") };//初始化数据
  8. this.Repeater2.DataSource = testDS2;//指定数据源
  9. this.Repeater2.DataBind();//绑定数据
  10. #endregion
  11. #region 定义Dictionary<string,string>的数据源类型
  12. Dictionary<string, string> testDS3 = new Dictionary<string, string>() { { "1", "value1" }, { "2", "value2" } };//初始化数据
  13. this.Repeater3.DataSource = testDS3;//指定数据源
  14. this.Repeater3.DataBind();//绑定数据
  15. #endregion
3. 前台主要代码:
  
  
  
  
  1. <div>  
  2.     <a>第一个repeater显示的数据:</a>  
  3.     <asp:Repeater ID="Repeater1" runat="server">  
  4.         <HeaderTemplate>  
  5.             <table>  
  6.                 <th>  
  7.                     显示  
  8.                 </th>  
  9.         </HeaderTemplate>  
  10.         <ItemTemplate>  
  11.             <tr>  
  12.                 <td>  
  13.                     <%#Container.DataItem %>  
  14.                 </td>  
  15.             </tr>  
  16.         </ItemTemplate>  
  17.         <FooterTemplate>  
  18.             </table>  
  19.         </FooterTemplate>  
  20.     </asp:Repeater>  
  21. </div>  
  22. <div >  
  23.     <a>第二个repeater显示的数据:</a>  
  24.     <asp:Repeater ID="Repeater2" runat="server">  
  25.         <HeaderTemplate>  
  26.             <table>  
  27.                 <th>  
  28.                     Age  
  29.                 </th>  
  30.                 <th>  
  31.                     Name  
  32.                 </th>  
  33.         </HeaderTemplate>  
  34.         <ItemTemplate>  
  35.             <tr>  
  36.                 <td>  
  37.                     <%#DataBinder.Eval(Container.DataItem,"Age") %>    
  38.                 </td>  
  39.                 <td>  
  40.                    <%#DataBinder.Eval(Container.DataItem,"Name") %>  
  41.                 </td>  
  42.             </tr>  
  43.         </ItemTemplate>  
  44.         <FooterTemplate>  
  45.             </table>  
  46.         </FooterTemplate>  
  47.     </asp:Repeater>  
  48. </div>  
  49. <div>  
  50.     <a>第三个repeater显示的数据:</a>  
  51.     <asp:Repeater ID="Repeater3" runat="server">  
  52.         <HeaderTemplate>  
  53.             <table>  
  54.                 <th>  
  55.                     Key  
  56.                 </th>  
  57.                 <th>  
  58.                     Value  
  59.                 </th>  
  60.         </HeaderTemplate>  
  61.         <ItemTemplate>  
  62.             <tr>  
  63.                 <td>  
  64.                     <%#Eval("key") %>  
  65.                 </td>  
  66.                 <td>  
  67.                     <%#Eval("value") %>  
  68.                 </td>  
  69.             </tr>  
  70.         </ItemTemplate>  
  71.         <FooterTemplate>  
  72.             </table>  
  73.         </FooterTemplate>  
  74.     </asp:Repeater>  
  75. </div> 
       由于"2. 后台主要代码"指定了repeater的数据源,在"3. 前台主要代码"  在<ItemTemplate>中,如果数据源没有字段名,通过 <%#Container.DataItem %> 来显示数据,如第一个Repeater所示;如果数据源存在字段名通过<%#Eval("字段名")%>或者<%#DataBinder.Eval(Container.DataItem,"字段名")%>来显示数据。使用以上来显示一般数据就可以,如果数据是需要修改的,则使用Bind("字段名").
4.其它有用小结:
Eval和Bind区别:Eval是只读方法,将其参数中字段的值作为字符串返回;Bind则可读可写,可以检索数据绑定控件的值并将任何修改提回会数据库。
Container.DataItem和DataBinder:
DataBinder是System.Web里面的一个静态类,它提供了Eval方法用于简化数据绑定表达式的编写
Container则是ASP.NET页面编译器在数据绑定事件处理程序内部声明的局部变量,其类型是可以进行数据绑定的控件的数据容器类型(如在Repeater内部的数据绑定容器叫RepeaterItem),在这些容器类中基本都有DataItem属性,因此你可以写Container.DataItem,这个属性返回的是你正在被绑定的数据源中的那个数据项。如果你的数据源是DataTable,则这个数据项的类型实际是DataRowView。
 
 
------- Windows Phone 7手机开发、 .Net培训、期待与您交流! -------

你可能感兴趣的:(C#,asp.net,Repeater,ItemTemplate)