C#高级编程:数据绑定深入理解

 1. 使用模板显示数据

    另外两个数据显示控件是Repeater 和 DataList,要求使用模板来格式化要显示的数据。模板在ASP.NET中是HTML的参数化部分,用作某些控件的输出元素。它们可以定制如何将数据输出到浏览器上,不需要作太多的工作就可以得到专业级的显示结果。

    有几个模板可用于定制列表的各个方面。对于Repeater 和 DataList来说,一个重要的模板是,它可以用于显示每个数据项。在控件声明中声明这个模板(和其他模板),例如:
    
      
          ...
      

    

    在模板声明中,一般是输出HTML的部分内容,参数是绑定到控件的数据。在输出这些参数时,应使用一种特殊的语法:
    <%# expression %>

    expression 是把参数绑定到页面或控件属性上的一个表达式,但它常常是由一个DataBinder.Eval()表达式组成。通过指定表中的列,这个函数可以从绑定到控件的表中输出数据,这可以使用下面的语法来实现:
    <%# DataBinder.Eval(Container.DataItem, "ColumnName") %>

    还有第三个可选参数,可以格式化返回的数据,它的语法与其他地方使用的字符串格式化表达式相同。表25-6列出了可用的模板以及它们的用法。
 模    板  说    明
   列表项目使用的模板
       列表前输出内容使用的模板
      列表后输出内容使用的模板
      列表中项目之间使用的模板
       其他项目使用的模板,有助于查看
       (只用于DataList) 列表中所选项目使用的模板
     (只用于DataList)用于列表中正在编辑的项目的模板

    表  25-6

    说明: 了解模板最简单的方式是使用一个示例,这可以在PCSWebApp3中使用现有的数据查询来完成。

   2. 使用模板的示例

    在页面的顶部扩展表格,使之包含一个DataList,显示存储在数据库中的每个会议。使这些会议成为可选择的,这样单击每个会议的名称,就可以显示它们的信息。

    修改PCS
WebApp3项目的WebForm1.aspx中的代码:
               


                                                        HeaderText="Before submitting your request:"/>
                  

                     
                        
                           
                           
                        
                     

                                                                          OnSelectedIndexChanged=
                                           "eventDetails2_SelectedIndexChanged">
                                 
                                                                                          CommandFTEL="Select"
                                                     ForeColor="#0000ff"
                                                     ID="Linkbutton1"
                                                     CausesValidation="false">
                                        <%# DataBinder.Eval(Container.DataItem,
                                                            "Name")%>
                                    

     
                                    

                                 

                                 
                                     <%# DataBinder.Eval(Container.DataItem,
                                                            "Name") %>

                                    

                                 

                              

                           

                                                                         Font-FTEL="Arial" Font-Bold="True"
                                          Font-Italic="True" Font-Size="14">
                                  Select an event to view details.
                              

                              

                              
                              

                         
                              

                              
                           


                  

    我们添加了一个新的表行,其中包含一个表,该表中的一列是一个DataList,另一列是一个信息视图。信息视图中有4个标签表示会议属性,其中一个包含文本“Select an event to view details”。如果没有选择任何会议,则显示该文本,表示该窗体是第一次加载。

    DataList使用显示会议信息。为了提供选择,对会议名称链接执行Select命令,该会议名称链接显示在中,这样就可以自动修改选择。我们还使用了OnSelectedIndexChanged事件,当Select命令修改选择时触发这个事件,填充会议信息标签。如果双击设计器中的eventDetails2,就会得到如下的事件处理程序。还需要把方法的保护级别从protected改为private。(注意首先要执行DataBind()来更新选项):
          private void eventDetails2_SelectedIndexChanged(object sender,
                                                            System.EventArgs e)
          {
             eventDetails2.DataBind();
             DataRow selectedEventRow =
                                      eventTable.Rows[eventDetails2.SelectedIndex];
             edName.Text = (string)selectedEventRow["Name"];
             edDate.Text = "Date: " +
                      ((DateTime)selectedEventRow["EventDate"]).ToLongDateString();
             edAttendees.Text = "Attendees: " +
                                          (string)selectedEventRow["AttendeeList"];
             DataRow selectedEventRoomRow =
                        ds.Tables["Rooms"].Rows[(int)selectedEventRow["Room"] - 1];
             edRoom.Text = "Room: " + selectedEventRoomRow["Room"];
          }

    使用ds和eventTable中的数据填充信息视图。
    与前面所用的DataGrid一样,需要为eventDetails2设置数据,并绑定到Page_Load()中:
             eventDetails1.DataSource = eventTable;
             eventDetails2.DataSource = eventTable;
             ...

              eventDetails1.DataBind();
                eventDetails2.DataBind();

    重新绑定到submitButton_Click()中:
                   eventDetails1.DataBind();
                   eventDetails2.DataBind();

    现在会议的详细信息就显示在表中,如图25-8所示。


图  25-8

    使用模板和数据绑定控件可以完成许多任务,需要用一本书的篇幅来介绍。但是,这里介绍的内容已经足够您开始试用它们了。

 

FROM:http://develop.csai.cn/dotnet_C/200801151600411219.htm

 
[收藏] [返回顶部] [打印本页] [关闭窗口]  
 
 
 
 相关主题:  
 
使用HTML+CSS编写灵活的Tab页
关于学习Div+CSS的一些精妙问答
C#高级编程:数据绑定深入理解
 
 网友评论:
正在加载……
 
*评论者:
主页:
标题:
*内容:
【声明】 地球黑匣子网刊载的资讯及其他内容均由网友提供分享 并且纯属作者个人观点,不表示地球黑匣子网同意其说法或描述,仅为提供更多信息,也不构成任何建议。网友转载请注明原作者姓名及出处。如有侵犯到您的版权,请与我们联系,我们会马上进行重新整理!
最新日志列表
人气主题
 
     
声明:本网站部分内容属网民发布和来自于互联网。对于引用、发布、转载和放置的内容(广告、链接、文字、图像或声音),所产生的所有法律责任,都将由信息归属者或者广告厂商提供者承担,并且由此产生的版权、署名权的异议、纠纷,本网站概不承担任何责任,本站转载素材仅供大家欣赏和分享,切勿做为商业目的使用。
 
Copyright © 地球黑匣子网 2007.06 - 2009   Email:dqhxzcom@163.com
鲁ICP备07501416号   QQ:254212580 网站管理