如何将变量值后面的代码转换为repeater itemtemplate

时间:2014-02-04 10:37:02

标签: asp.net linq repeater

我在asp.net中的代码后面有一个变量  说       string str =“我的名字”;

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

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

使用linq查询绑定Repeater。

3 个答案:

答案 0 :(得分:3)

见以下样本:

代码背后:

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>

答案 1 :(得分:2)

使用 OnItemDataBound 访问Label。

<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;
    }
}

答案 2 :(得分:1)

该属性必须至少为protected,然后您可以内联访问它:

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

代码隐藏:

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

请注意%#仅用于数据绑定上下文。因此,标签的容器控件上必须有DataBind。如果它不在GridView但在页面的顶层,则需要this.DataBind()