Grid View for ASP.NET Web Forms - How to use a grid lookup control in multiple selection mode to edit grid data
This example demonstrates how to add a grid lookup control in multiple selection mode to the grid's edit form template.
When the ASPxGridLookup control is in multiple selection mode (the GridLookup.SelectionMode property is set to Multiple
), use the following API members to access the selected items:
- The grid's ASPxGridBase.GetSelectedFieldValues method to get the selected field values.
- The grid's ASPxGridView.Selection property to select items.
<dx:ASPxGridView ID="Grid" runat="server" AutoGenerateColumns="False" KeyFieldName="ID" ... >
<Columns>
<!-- ... -->
<dx:GridViewDataColumn FieldName="TagIDs">
<EditItemTemplate>
<dx:ASPxGridLookup ID="Lookup" runat="server" AutoGenerateColumns="false" DataSourceID="LookupDataSource"
KeyFieldName="ID" SelectionMode="Multiple" OnInit="Lookup_Init" TextFormatString="{1}">
<Columns>
<dx:GridViewCommandColumn ShowSelectCheckbox="true" VisibleIndex="0" />
<!-- ... -->
</Columns>
</dx:ASPxGridLookup>
</EditItemTemplate>
</dx:GridViewDataColumn>
</Columns>
<SettingsEditing EditFormColumnCount="1" Mode="PopupEditForm" PopupEditFormWidth="200" />
</dx:ASPxGridView>
protected void Lookup_Init(object sender, EventArgs e) {
var lookup = (ASPxGridLookup)sender;
var container = (GridViewEditItemTemplateContainer)lookup.NamingContainer;
if (container.Grid.IsNewRowEditing)
return;
var tagIDs = (int[])container.Grid.GetRowValues(container.VisibleIndex, container.Column.FieldName);
if(tagIDs != null) {
foreach(var tagID in tagIDs)
lookup.GridView.Selection.SelectRowByKey(tagID);
}
}
private int[] GetTags() {
var column = (GridViewDataColumn)Grid.Columns["TagIDs"];
var lookup = (ASPxGridLookup)Grid.FindEditRowCellTemplateControl(column, "Lookup");
var tags = lookup.GridView.GetSelectedFieldValues(lookup.KeyFieldName) as List<object>;
return tags.Select(t => (int)t).ToArray();
}
- Default.aspx (VB: Default.aspx)
- Default.aspx.cs (VB: Default.aspx.vb)