如何将代码在Repeater ItemTemplate中获取后面的代码



我在asp.net中的文件后面的代码中有一个变量 说 字符串str ="我的名字";

我想将此字符串绑定到中继器中的标签。

    <asp:Label  ID="lblsubjects" runat="server" Text='<%# What to  write here %>'/>

使用linq查询伴随着中继器。

请参阅下面的样本:

代码背后:

protected string myString;
protected void Page_Load(object sender, EventArgs e)
{
    myString = "My Name";
    string[] data = new[] { "1", "2", "3" };
    this.rep.DataSource = data;
    this.rep.DataBind();
}

aspx:

<asp:Repeater runat="server" ID="rep">
    <ItemTemplate>
        <div>
            <asp:Label runat="server" Text="<%#myString %>"></asp:Label>
        </div>
    </ItemTemplate>
</asp:Repeater>

使用 onItemDatabound 访问标签。

<asp:Repeater ID="Myrp" runat="server" OnItemDataBound="R1_ItemDataBound">

代码背后:

public void R1_ItemDataBound(Object Sender, RepeaterItemEventArgs e)
{
    string str = "MY Name";
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        ((Label)e.Item.FindControl("lblsubjects")).Text = str;
    }
}

属性至少需要protected,然后您可以在线访问它:

<asp:Label  ID="lblsubjects" runat="server" Text='<%# MyStr %>' />

codebehind:

private string _MyStr = "MY Name";
protected string MyStr
{
    get
    {
        return _MyStr;
    }
    set
    {
        _MyStr = value;
    }
}

请注意,%#仅用于数据框上下文。因此,标签的容器控件上必须有DataBind的某个地方。如果不在GridView中,而是在页面的顶层,则需要this.DataBind()

最新更新