0

我在单击编辑时出现的网格视图内有一个列表框,它有一个事件类型列表,您可以选择多个。单击更新按钮时,我无法弄清楚如何更新我的实体。我需要能够使用从 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 的实体?

4

1 回答 1

0

在您的RowUpdating事件期间GridView,您可以捕获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();

}

于 2013-04-13T00:58:22.227 回答