2013-05-06 6 views
0

У меня есть коллекция записей, каждая запись имеет идентификатор и описание. Теперь у меня есть 8 текстовых полей, и я хочу, чтобы в каждом текстовом поле содержалось описание каждой записи.asp.net Связывание данных FormView с коллекцией данных

Так что, если я делаю это

Text='<%# Eval("Record[0].Description") %>' /> 

Это дает ошибку, любой другой способ сделать это?

Также могу ли я сделать это в разметке, или мне нужно сделать это в коде позади, под методом привязки данных для формы?

Спасибо ..

+0

какой ошибка? если вы просто хотите показать репитер записи лучше вариант –

ответ

1

FormView не предназначена для отображения списка данных.

Если у вас есть список данных, вы должны использовать GridView или ListView.

Привяжите свой FormView к источнику данных, имеющему одну запись, а затем непосредственно Eval поля источника данных.

т.е. сделать это:

<asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSourceId"> 
    <ItemTemplate> 
     <asp:TextBox id="txtDescription" 
        Text='<%# Eval("Description") %>' /> 

     <asp:TextBox id="txtName" 
        Text='<%# Eval("Name") %>' /> 


     .. 
    </ItemTemplate> 
</asp:FormView> 

поэтому в основном, ваш FormView должен содержать различную DataField, и она должна быть связана с DataSource, имеющий только один элемент.

+0

Большое спасибо за ответ. Но вот моя ситуация. У меня есть formview с шаблоном редактирования, а категория в formview имеет 8 текстовых полей. Данные этих texboxes находятся в коллекции из 8 записей. Теперь, когда я перехожу в режим редактирования formview, я получаю коллекцию из этих 8 записей. Как я могу заполнить эти 8 текс-боксов своими значениями, чтобы пользователь мог внести изменения и сохранить данные? – Prashant

+0

Ваша ситуация все еще не ясна для меня. Посмотрите, как вы привязываете каждое поле формыView только с одной записью. если вы разместили 8 текстовых полей внутри вашего formView, вы должны связать их с 8 различными полями данных – 2013-05-06 18:15:26

+0

да, я думаю, я сломаю свою коллекцию на 8 разных полей данных, возможно, не лучший способ это сделать. Но это должно сработать. – Prashant

0

Вы можете использовать ретранслятор внутри:

<asp:repeater ID="rep" runat="server" DataSource='<%# Eval("Record") &>'> 
    <ItemTemplate> 
     <asp:textbox id="txt" runat="server" Text='<%# Eval("Description") &>' /> 
    </ItemTemplate> 
</asp:repeater> 

В повторителя вы будете связываться с вашим внешним источником данных, внутри повторителя вашего DataContext является запись

Смежные вопросы