выражение привязки данных в asp.net - PullRequest
0 голосов
/ 18 марта 2010

У меня есть страница VS2005 ASP.Net с ретранслятором клиентов.

В репитере отображается следующее:

<span><%# Eval(GetAdLinks((Customer)Container.DataItem)) %></span>

GetAdLinks - это защищенный метод в коде, за которым возвращается элемент управления, представленный в виде строки. Это возможно?

Я получаю сообщение об ошибке, в котором говорится, что у клиента нет свойства с именем ...

Есть идеи?

Ответы [ 2 ]

1 голос
/ 18 марта 2010

Лучший способ сделать это - добавить Literal в шаблон Repeater, а затем реализовать метод OnDataBinding.Это именно то, для чего Literal.

Вот пример:

<asp:Literal ID="litYourControl" runat="server" OnDataBinding="litYourControl_DataBinding" />

Затем в вашем коде за его реализацию:

protected void litYourControl(object sender, System.EventArgs e)
{
    Literal lt = (Literal)(sender);
    // Not sure what field you are binding to based on the example in your question
    // so I will just make an assumption.
    Customer cus = (Customer)(Eval("Container.DataItem"));
    lt.Text = GetAdLinks(cus);
}
0 голосов
/ 18 марта 2010

Если это клиентский элемент управления (без runat = "server"), то это должно быть возможно. Но вы не должны включать его в Eval (). Я думаю, это должно выглядеть примерно так:

<%# GetAdLinks(Container.DataItem) %>

Метод GetAdLinks должен быть реорганизован для принятия Container.DataItem в качестве объекта DataRowView. Внутри метода вы можете привести его к объекту Customer, который можно выяснить с помощью небольшой отладки.

Удачи!

...