Табличный вывод данных. Продолжение.
2010-06-08 от Kosten
В предыдущей статье мы рассмотрели создание шаблона таблицы и наполнение его данными. Сегодня мы рассмотрим возможность редактирования данных в таблице. Для этого нам понадобится исходный код примера из предыдущей статьи. Обратите внимание, что в нашей таблице есть колонка “Действия”, в которой находится пока одно действие - редактировать. При нажатии на эту ссылку соответствующая запись переходит в режим редактирования. С помощтю шаблонов мы можем управлять этим процессом. Добавьте в нашу таблицу ListView следующий раздел:
<EditItemTemplate> <tr> <td> <asp:TextBox ID="txtSurname" runat="server" Text='<%#Bind("Surname")%>' Width="170px"></asp:TextBox> <br /> <asp:TextBox ID="txtName" runat="server" Text='<%#Bind("Name")%>' Width="170px"></asp:TextBox> <br /> <asp:TextBox ID="txtPatronymic" runat="server" Text='<%#Bind("Patronymic")%>' Width="170px"></asp:TextBox> <asp:HiddenField ID="hfSurname" runat="server" Value='<%#Bind("Surname")%>' /> <asp:HiddenField ID="hfName" runat="server" Value='<%#Bind("Name")%>' /> <asp:HiddenField ID="hfPatr" runat="server" Value='<%#Bind("Patronymic")%>' /> </td> <td> <asp:TextBox ID="txtAddr" runat="server" Text='<%#Bind("Addr")%>' Width="170px"></asp:TextBox> </td> <td> <asp:TextBox ID="txtPhone" runat="server" Text='<%#Bind("Phone")%>' Width="100px"></asp:TextBox> </td> <td> <asp:TextBox ID="txtBirthDate" runat="server" Text='<%#Bind("BirthDate")%>' Width="170px"></asp:TextBox> <ajaxToolkit:CalendarExtender ID="exCal" runat="server" TargetControlID="txtBirthDate"> </ajaxToolkit:CalendarExtender> </td> <td> <asp:DropDownList ID="ddlGender" runat="server" Width="50px"> <asp:ListItem Text="муж." Value="M"></asp:ListItem> <asp:ListItem Text="жен." Value="W"></asp:ListItem> </asp:DropDownList> </td> <td> <asp:TextBox ID="txtDescription" runat="server" Text='<%#Bind("Description")%>' Width="170px"></asp:TextBox> </td> <td> <asp:LinkButton ID="lbSave" runat="server" OnCommand="lbSave_Command" CausesValidation="false">Сохранить</asp:LinkButton><br /> <asp:LinkButton ID="lbDelete" runat="server" OnCommand="lbDelete_Command" CausesValidation="false">Удалить</asp:LinkButton><br /> <asp:LinkButton ID="lbCancel" OnCommand="lbCancel_Command" runat="server" CausesValidation="false">Отмена</asp:LinkButton> </td> </tr> </EditItemTemplate>
Этот шаблон описывает запись в таблице для редактирования. А именно какие элементы подлежат редактированию и с помощью каких контролов. Обратите внимание на столбец “Действия” - там появились команды “Сохранить”, “Удалить” и “Отмена”. Давайте рассмотрим их реализацию в коде.
Отмена редактирования:
protected void lbCancel_Command(object sender, CommandEventArgs e) { lvDataView.EditIndex = -1; lvDataView.DataBind(); }
Сохранить изменения:
protected void lbSave_Command(object sender, CommandEventArgs e) { string strName, strSurname, strPatron, strAddr, strPhone, strGender, strDesc; string strTemp; ListViewItem lvi = ((ListViewItem)((LinkButton)sender).NamingContainer); strName = ((TextBox)lvi.FindControl("txtName")).Text.Trim(); strSurname = ((TextBox)lvi.FindControl("txtSurname")).Text.Trim(); strPatron = ((TextBox)lvi.FindControl("txtPatronymic")).Text.Trim(); strAddr = ((TextBox)lvi.FindControl("txtAddr")).Text.Trim(); strPhone = ((TextBox)lvi.FindControl("txtPhone")).Text.Trim(); strDesc = ((TextBox)lvi.FindControl("txtDescription")).Text.Trim(); strGender = ((DropDownList)lvi.FindControl("ddlGender")).SelectedValue; strTemp = ((TextBox)lvi.FindControl("txtBirthDate")).Text.Trim(); DateTime dtBirthDate = Convert.ToDateTime(strTemp); DateTime dtNow = DateTime.Now; string strNameORG, strSurnameORG, strPatronORG; strNameORG = ((HiddenField)lvi.FindControl("hfName")).Value.Trim(); strSurnameORG = ((HiddenField)lvi.FindControl("hfSurname")).Value.Trim(); strPatronORG = ((HiddenField)lvi.FindControl("hfPatr")).Value.Trim(); //тут сохраняем в базе lvDataView.EditIndex = -1; lvDataView.DataBind(); }
Удаление записи:
protected void lbDelete_Command(object sender, CommandEventArgs e) { ListViewItem lvi = ((ListViewItem)((LinkButton)sender).NamingContainer); string strNameORG, strSurnameORG, strPatronORG; strNameORG = ((HiddenField)lvi.FindControl("hfName")).Value.Trim(); strSurnameORG = ((HiddenField)lvi.FindControl("hfSurname")).Value.Trim(); strPatronORG = ((HiddenField)lvi.FindControl("hfPatr")).Value.Trim(); //удаляем запись из базы lvDataView.EditIndex = -1; lvDataView.DataBind();
Этот код можно легко адаптировать под различные варианты использования с минимальными затратами.
Удачного Вам программирования. Жду Ваших отзывов, комментариев, вопросов.
Опубликовано Вторник, 08-06-2010 в 3:35 пп в рубрики ASP.NET, C#, Без рубрики. Вы можете оставить отслеживать комментарии к записи при помощи RSS 2.0 ленты. Вы можете оставить комментарий, или трекбек с Вашего сайта.