• 不带数据绑定表达式的数据绑定


            为什么要避免使用数据表达式呢?使用数据表达式并不会出错,而且只你想用就可以一直使用数据绑定表达式,但是,你会发现当需要在模板内执行复杂的操作时,不使用数据绑定表达式能提高代码的可读性。
            不使用数据表达式的窍门是处理控件的ItemDataBound事件(Repeater、DataGrid、DataList都有ItemDataBound事件)。ItemDataBound事件为从数据源检索出的每一个项所触发。因此,如果绑定Repeater控件到包含11个作者的数据库表,那么ItemDataBound事件就被触发11次——每个作者触发一次。
            除了ItemDataBound外,Repeater控件也支持ItemCreated事件。ItemCreate事件是创建每个RepeaterItem时触发。DataGrid与DataList也有ItemCreate事件。

    例子:
    页面代码:
    ……
    ……
    <asp:repeater id="Repeater2" runat="server">
          
    <ItemTemplate>
            
    <asp:Label ID="lblItem" runat="server" />
          
    </ItemTemplate>
    </asp:repeater>
    ……
    ……
    后台代码:
    private void Page_Load(object sender, System.EventArgs e)
    {
            SqlConnection conn 
    =new SqlConnection("server=(local);database=JgyeyMIB;pwd=;uid=sa");
            SqlCommand cmd 
    = new SqlCommand("Select * from ClassTB select * from ClassTB",conn);
            conn.Open();
            SqlDataReader rd 
    = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        
    this.Repeater2.DataSource = rd;
        
    this.Repeater2.DataBind();
        rd.Close();
    }


    private void Repeater2_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
    {
        
    if(e.Item.ItemType == ListItemType.Item)
        
    {
            Label lbl 
    = new Label();
            lbl 
    = e.Item.FindControl("lblItem"as Label;
            lbl.Text 
    = DataBinder.Eval(e.Item.DataItem,"className","{0}")+"<br>";
        }

    }


  • 相关阅读:
    继承String?
    java sizeof
    什么是java序列化,如何实现java序列化?
    负载均衡的时候如何实现相同的session被分配到同一个服务器
    如何实现session共享
    java 字符串排序
    forward和redirect的区别
    数字签名 数字证书
    找出数组中重复次数最多的元素并打印
    get和post区别
  • 原文地址:https://www.cnblogs.com/ghx88/p/350979.html
Copyright © 2020-2023  润新知