Hi
I'm implementing dropdown list defaulting based on selection while editing/adding a row on a webdatagrid. I have the events firing for selected index changed and data bound, but can't seem to set the selected index, i've tried
ddlUnitID.EditorControl.Items[2].Selected = true; ddlUnitID.EditorControl.SelectedValue = ddlUnitID.EditorControl.Items[2].Value; ddlUnitID.EditorControl.SelectedItemIndex = 2;
all seem to not select the item in the dropdopdown on the editing row. I've tried this both on selection changed and ondatabound.
<ig:WebDataGrid ID="WebDataGrid1" runat="server" AutoGenerateColumns="False" OnRowUpdating="WebDataGrid1_RowUpdating" AutoGenerateBands="true" ViewStateMode="Disabled" DataKeyFields="ID" Width="98%" OnRowAdded="WebDataGrid1_RowAdded" OnRowAdding="WebDataGrid1_RowAdding" OnRowsDeleting="WebDataGrid1_RowDeleting" > <Columns> <ig:BoundDataField Hidden="true" DataFieldName="ID" Key="ID" > <Header Text="ID" /> </ig:BoundDataField> <ig:BoundDataField DataFieldName="Ordinal" Key="Ordinal"> <Header Text="Process No." /> </ig:BoundDataField> <ig:BoundDataField DataFieldName="MaterialID" Key="Material"> <Header Text="Material" /> </ig:BoundDataField> <ig:BoundDataField DataFieldName="QTY" Key="GROSS"> <Header Text="Quantity" /> </ig:BoundDataField> <ig:BoundDataField DataFieldName="UnitQTYID" Key="UOM"> <Header Text="Unit" /> </ig:BoundDataField> <ig:BoundDataField DataFieldName="UnitQTY" Key="COUNT"> <Header Text="Weight" /> </ig:BoundDataField> <ig:BoundDataField DataFieldName="UnitID" Key="WUOM"> <Header Text="Weight Unit" /> </ig:BoundDataField> <ig:BoundDataField DataFieldName="Comments" Key="NET"> <Header Text="Comments" /> </ig:BoundDataField> <ig:TemplateDataField Key="DeleteItem" Width="60px"> <Header Text="Delete" /> <ItemTemplate> <asp:LinkButton runat="server" ID="DeleteItem" Text="X" OnClientClick="DeleteRow(); return false;" /> </ItemTemplate> </ig:TemplateDataField> </Columns> <EditorProviders> <ig:DropDownProvider ID="ddlMaterialID"> <EditorControl ID="ddlMatID" runat="server" DisplayMode="DropDown" TextField="NAME" OnSelectionChanged="ddlMatID_SelectionChanged" ValueField="ID" DataSourceID="srcMaterial" AutoPostBackFlags-SelectionChanged="Async"> </EditorControl> </ig:DropDownProvider> <ig:DropDownProvider ID="ddlUnitID"> <EditorControl ID="ddlUnID" runat="server" DisplayMode="DropDown" TextField="UNIT_NAME" ValueField="ID" DataSourceID="srcUnit" OnDataBound="ddlUnitID_DataBound"> </EditorControl> </ig:DropDownProvider> <ig:DropDownProvider ID="ddlWUnitID" > <EditorControl ID="ddlWUnID" runat="server" DisplayMode="DropDown" TextField="UNIT_NAME" ValueField="ID" DataSourceID="srcWUnit"> </EditorControl> </ig:DropDownProvider> <ig:NumericEditorProvider ID="txtUOM"> </ig:NumericEditorProvider> <ig:NumericEditorProvider ID="txtQuantity"> </ig:NumericEditorProvider> </EditorProviders> <Behaviors> <ig:Activation /> <ig:Selection RowSelectType="Multiple" CellClickAction="Row" /> <ig:Sorting SortingMode="Single" Enabled="true" /> <ig:ColumnMoving> </ig:ColumnMoving> <ig:ColumnResizing> </ig:ColumnResizing> <ig:EditingCore> <Behaviors> <ig:CellEditing Enabled="true"> <EditModeActions EnableF2="true" EnableOnActive="true" MouseClick="Single" /> <ColumnSettings> <ig:EditingColumnSetting ColumnKey="ID" ReadOnly="true" /> <ig:EditingColumnSetting ColumnKey="Material" EditorID="ddlMaterialID" /> <ig:EditingColumnSetting ColumnKey="COUNT" EditorID="txtQuantity" /> <ig:EditingColumnSetting ColumnKey="UOM" EditorID="ddlUnitID" /> <ig:EditingColumnSetting ColumnKey="WUOM" EditorID="ddlWUnitID" /> </ColumnSettings> </ig:CellEditing> <ig:RowAdding Alignment="Bottom" EditModeActions-EnableOnActive="true" EditModeActions-MouseClick="Single" Enabled="true" > <AddNewRowClientEvents ExitedEditMode="WebDataGridView_ExitedEditMode" /> <ColumnSettings> <ig:RowAddingColumnSetting ColumnKey="ID" ReadOnly="true" /> <ig:RowAddingColumnSetting ColumnKey="Material" EditorID="ddlMaterialID" /> <ig:RowAddingColumnSetting ColumnKey="COUNT" EditorID="txtQuantity" /> <ig:RowAddingColumnSetting ColumnKey="UOM" EditorID="ddlUnitID" /> <ig:RowAddingColumnSetting ColumnKey="WUOM" EditorID="ddlWUnitID" /> </ColumnSettings> </ig:RowAdding> <ig:RowDeleting Enabled="true" /> </Behaviors> </ig:EditingCore> </Behaviors> <ClientEvents AJAXResponse="WebDataGridView_AJAXResponse" /> </ig:WebDataGrid>
Using 2013.2 ASP.net and C#.Thanks
Ten
Hello Ten!
Thank you for contacting Infragistics Developer Support!
You can set default selected index based on another dropdown editor on the client side using EnteredEditMode event.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
function WebDataGrid1_CellEditing_EnteredEditMode(sender, eventArgs) { // Check if the current column is the desired if not do nothing if (eventArgs.getCell().get_column().get_key() != 'SupplierID') { return; } // Get the column value on which you will do your restrictions for the current column var categoryId = eventArgs.getCell().get_row().get_cellByColumnKey('CategoryID').get_value(); var defaultSelected = null; // set desired value based on the other dropdown if (categoryId == 1) { defaultSelected = 1; } else { defaultSelected = 5; } // If there is default selected index set it if (defaultSelected) { var editor = eventArgs.getEditor(); editor.selectItem(editor.get_items().get_item(defaultSelected), true, true); } }
Review the attached sample, and let me know if I may be of any further assistance.
Denis,
I need this functionality in my project as well but the zip file containing the sample code you posted appears to be corrupted. Could you repost it for me?
Thanks a lot!
Thanks Denis I wanted to do it server side to avoid a post to our webservice (there have been timing issues doing it that way). I guess there is no way around it. I'll try it from the client side.