ASP.. NET列表框中的gridview

本文关键字:gridview NET 列表 ASP | 更新日期: 2023-09-27 18:08:49

我有一个gridview里面的列表框,当你点击编辑时出现,它有一个事件类型列表,你可以选择多个。当单击更新按钮时,我不知道如何更新我的实体。我需要能够更新实体集合与选择从列表框内的网格视图。gridview正在使用实体数据源。下面是gridview中的列表框。

   <asp:TemplateField HeaderText="Event Type">
            <ItemTemplate>
                <asp:Label runat="server" ID="eventTypeLabel" Text="<%#VenueExplorer.Utilities.StringUtils.convertEventsToCommaString(Container.DataItem) %>" />
            </ItemTemplate>
            <EditItemTemplate>
                <asp:ListBox ID="eventListbox" runat="server" DataSourceID="eventTypeDataSource" DataValueField="EventTypeID" DataTextField="EventType" SelectionMode="Multiple"></asp:ListBox>
            </EditItemTemplate>
        </asp:TemplateField>

是否有一种方法,我可以在实际保存之前更新绑定到gridview的实体?

ASP.. NET列表框中的gridview

GridViewRowUpdating事件期间,您可以捕获ListBox的选定值。

在不知道完整的标记或数据库结构的情况下,我只能模拟预期的代码。就像这样,不过你显然需要修改它来满足你的需要:
protected void grdView_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    ListBox eventListbox = (ListBox)grdViewName.Rows[e.RowIndex].Cells[ZeroBasedCellNumberOfTheListBox].FindControl("eventListbox");
    // Retrieve the currently selected entity (row) from the database
    ParentEntity yourParentEntity = from entity in DataContext.ParentEntity where entity.ID == grdViewName.Rows[e.RowIndex].Cells[IndexOfYourEntitysID].Text;
    foreach (ListItem item in eventListbox.Items)
    {
        if (item.Selected)
        {
            EventType eventType = new EventType();
            eventType.ID = item.Value;
            eventType.Name = item.Text;
            yourParentEntity.EventTypes.Add(eventType);            }
    }
    DataContext.Commit();

}