0
<asp:Repeater ..>
<ItemTemplate>
<% string age = Eval("a").ToString() %>

<%
   age = a.ToLower(); // real stuff here
%>

<p>Hello <%# Eval("name") %> you are <%= age %> old</p>

</ItemTemplate>    
</asp:Repeater>

次のようなエラーが表示されます。

Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.
4

2 に答える 2

1

使用する<%# Eval("<propertyName>") %>

もちろんDataSource、リピーターに a を割り当てて、呼び出す必要があります。DataBind()

また、これらのインライン コーディングを使用せずに、ロジック全体をデータ項目のカスタム プロパティにラップできます。たとえば、上記のコードのように、次のAgeようなカスタム プロパティを作成できます。

partial class YourDataItemClass // use partial if it is auto-generated
{
    public string Age
    {
        var ageStr = a.ToString(); // assuming YourDataItemClass  has an `a` var/property
        // Do real stuff here
        ...
        ...
        var lowered = ageStr.ToLower();
        ...
        ...
        return lowered;
    }
}

次のように、リピーター コントロール内でそのプロパティを公開できます。

<asp:Repeater id="myRepeater" ..>
<ItemTemplate>
    <p>Hello <%# Eval("Name") %> you are <%# Eval("Age") %> old</p>
</ItemTemplate>    
</asp:Repeater>

次のように、データソースを割り当て、コード ビハインドのどこかにリピーターをデータバインドします。

...
// Call the method which provides you the data
// IEnumerable<YourDataItemClass> myData = ... ; 
myRepeater.DataSource = myData;
myRepeater.DataBind();
...
于 2012-12-11T01:28:15.840 に答える
0
<asp:Repeater>
<ItemTemplate>
 <p>Hello <%# Eval("name") %> you are <%# Convert.ToString(Eval("a")).ToLower()  %>   old</p>

</ItemTemplate>    
</asp:Repeater>
于 2012-12-11T11:52:55.423 に答える