Как я могу получить доступ к данным в ODS с выражением ASP? - PullRequest
0 голосов
/ 19 января 2012

Если у меня есть следующий (общий) код ASP:

<asp:ObjectDataSource runat="server" ID="myODS">...</asp:ObjectDataSource>

<asp:GridView runat="server" ID="myGV" DataSourceID="myODS">
   <Columns>

      <asp:TemplateField>
         <ContentTemplate>
            <asp:Label runat="server" ID="myLabel" Text='<%# [What goes here?] %>' />
         </ContentTemplate>
      </asp:TemplateField>

      <asp:BoundField ... />
      <%-- Other columns... --%>

   </Columns>
</asp:GridView>

Что я могу вызвать в выражении ASP, внутри моего поля шаблона, которое позволит мне иметь доступ к моим результатам ODS? По сути, внутри выражения я хочу сделать что-то вроде row("ID"), чтобы получить определенное значение из столбца из моего ODS.

1 Ответ

1 голос
/ 19 января 2012

Существует несколько различных синтаксисов, которые вы можете использовать для указания конкретного свойства. Самое простое - использовать метод Eval:

    <asp:Label runat="server" ID="myLabel" Text='<%# Eval("ID") %>' />

Это сокращенный синтаксис для более подробного синтаксиса с использованием статического метода DataBinder.Eval, поэтому вы можете использовать этот более подробный синтаксис, если хотите:

    <asp:Label runat="server" ID="myLabel" Text='<%# DataBinder.Eval(Container.DataItem, "ID") %>' />

См. Здесь для документации MSDN по DataBinder.Eval

Edit: Я забыл упомянуть, что ASP.Net 2.0 и выше поддерживают метод «Bind»:

    <asp:Label runat="server" ID="myLabel" Text='<%# Bind("ID") %>' />

, который номинально поддерживает двустороннюю привязку данных. Таким образом, если вы используете метод Bind, вам не нужно вручную выводить на экран свое значение из вставленной или удаленной строки, и инфраструктура ASP.Net будет обрабатывать создание нового или измененного объекта. Однако на практике есть много предостережений для использования этого. Ваш объект домена должен иметь конструктор по умолчанию, должен состоять только из простых свойств, и я думаю, что есть еще несколько. На практике это настолько ограничительно, что я не думаю, что это очень полезная вещь для использования. Но я просто хотел указать на это.

...