<asp:sqldatasource id="myDataSource"
selectcommand="Select * From [myTable]"
runat="server"/>
Посдкажите с редактированием в GridView
Нужно из БД вывести данные с помощью GridView с возможностью их редактирования. Вот есть два варианта
1. Все данные выводить с помощью TextBox'ов, CheckBox'ов и т.д. и при постбэке сравнивать значения этих box'ов со значениями датасета.
Ну как это мне кажется не очень красиво.
2. Вот этот вариант хотелось бы по-подробнее разобрать и понять. Т.е. сделать так, чобы при нажатии кнопки Edit записи в выводимой таблице превращались, например, в TextBox, CheckBox. Вот нащёл пример в статье http://www.gotdotnet.ru/LearnDotNet/ASPNET/684.aspx.
Там написан пример как строку в DataGrid перевести в режим редактирования, вроде всё сделал, как там описано.
Вот пишу так:
<asp:TemplateField HeaderText="Опубликовать">
<EditItemTemplate>
<asp:CheckBox
Checked='<%# DataBinder.Eval(Container, "DataItem.pub")%>'
ID="pub" runat="server" Width="136px" />
</EditItemTemplate>
</asp:TemplateField>
И в результате выводится пустая колонка. А если заменить EditItemTemplate на ItemTemplate, то выводятся чекбоксы как надо. Подскажите, что я неправильно делаю?
Заранее спасибо
По поводу второго варианта. Хотелось бы сделать, чтобы строка в таблице переводилаьс в режим редактирования при кликании крурсором мыши на ней (этой строке)
Код:
В обработчике Load формы пишешь:
Код:
void Page_Load(Object sender, EventArgs e)
{
GridView customersGridView = new GridView();
customersGridView.AutoGenerateEditButton=true; //кнопка для редактирования
customersGridView.ID = "myGridView";
customersGridView.DataSourceID = "myDataSource";
customersGridView.AutoGenerateColumns = true;
Form.Controls.Add(customersGridView);
}
{
GridView customersGridView = new GridView();
customersGridView.AutoGenerateEditButton=true; //кнопка для редактирования
customersGridView.ID = "myGridView";
customersGridView.DataSourceID = "myDataSource";
customersGridView.AutoGenerateColumns = true;
Form.Controls.Add(customersGridView);
}
Вот здесь http://www.codersource.net/asp_net_grid_view_whidbey.aspx
Но вот возник вопрос
Во этой статье приводятся такие вот строки кода
<asp:Label Text='<%# Eval("ItemType") %>' Runat="Server"/>
<asp:DropDownList id="EditType" DataSourceID="TypeSource" Runat="Server"
DataTextField="ItemType" DataValueField="ItemType" SelectedValue='<%# Bind("ItemType") %>'/>
В чём разница между Eval("ItemType") и '<%# Bind("ItemType") %>'? Я вообще обычно использовал
DataBinder.Eval(Container, "DataItem.pub")
Вот здесь http://www.codersource.net/asp_net_grid_view_whidbey.aspx
Но вот возник вопрос
Во этой статье приводятся такие вот строки кода
<asp:Label Text='<%# Eval("ItemType") %>' Runat="Server"/>
<asp:DropDownList id="EditType" DataSourceID="TypeSource" Runat="Server"
DataTextField="ItemType" DataValueField="ItemType" SelectedValue='<%# Bind("ItemType") %>'/>
В чём разница между Eval("ItemType") и '<%# Bind("ItemType") %>'? Я вообще обычно использовал
DataBinder.Eval(Container, "DataItem.pub")[/quote]
Eval выполняет вычисление выражения привязываемых данных (так сказать мгновенное значение данных).
Метод Bind выполняет привязку (не обращение через рефлексию к свойству, как в eval) данных к контролу (выполняет отражаемое значение данных). Если контрол позволяет редактировать данные, то привязку можно производить только через Bind.