2013-04-12 3 views
0

У меня есть список внутри gridview, который появляется, когда вы нажимаете edit, у него есть список типов событий, которые вы можете выбрать несколько. Я не могу понять, как обновить объект, когда нажата кнопка обновления. Мне нужно иметь возможность обновлять коллекцию сущностей с помощью выбора из списка в gridview. В gridview используется источник данных сущности. Ниже приведен список в gridview.ASP.NET Listbox внутри 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, до того, как будет выполнено фактическое сохранение?

+0

кнопка обновления на каждой строке? если так попробуйте это, просто измените его на свои нужды: http://adsanti.wordpress.com/2011/07/19/gridview-dropdownlist-postback-to-load-info/ – Andres

+0

В своем обновлении вы просто добавили бы логики, чтобы прокрутить список. Точно так же, как если бы это было не в gridview. – briskovich

+0

Ответ на этот вопрос разрешил это для вас? Пожалуйста, дайте нам обновление. – McCee

ответ

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(); 

}

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