Как я могу исправить «Методы привязки данных, такие как Eval (), XPath () и Bind (), могут использоваться только в контексте элемента управления с привязкой к данным». - PullRequest
2 голосов
/ 05 мая 2010

У меня есть пользовательский элемент управления (ascx), к которому я добавил два открытых свойства: RequestTypeId и GroupId. Оба имеют атрибут Bindable(True).

На моей странице aspx у меня есть ListView, а в ItemTemplate я помещаю свою контрольную ссылку, вот так:

    <asp:ListView ID="lv" runat="server">
        <LayoutTemplate>
            <asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
        </LayoutTemplate>
        <ItemTemplate>
           <tr>
              <td>
                 <ctrl:ServiceTypeGroup id="ctrlServiceTypes" runat="server" RequestTypeId="<%#RequestType.RequestTypeId%>" GroupId='<%#Eval("Id")%>' />
              </td>
           </tr>
        </ItemTemplate>
    </asp:ListView>

Настройка RequestTypeId работает нормально. Установка GroupId завершается с ошибкой:

"Методы привязки данных, такие как Eval (), XPath () и Bind (), могут использоваться только в контексте элемента управления, связанного с данными."

Что мне нужно сделать с моим пользовательским управляющим кодом, чтобы разрешить привязку выражения Eval () к одному из его свойств? Или это невозможно?

1 Ответ

0 голосов
/ 05 мая 2010

Существуют некоторые свойства, такие как [Bindable (true)], которые вы можете предоставить пользовательским элементам управления.

Вы добавили это к рассматриваемым свойствам? Это будет выглядеть примерно так:

[Bindable(true)]
public int RequestTypeID { get; set; }

[Bindable(true)]
public int GroupID { get; set; }

Вверху вам понадобится следующее:

using System.ComponentModel;

Дополнительная информация:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...