Eric Klein
Top achievements
Rank 1
Eric Klein
asked on 17 May 2011, 09:31 PM
Ihave a grid that is set to edit useing EditForms. On the ItemDataBound I fill the dropdownlist in the EditForm this works great for Inserting records. The issue is when I select and record from the grid to edit I use
So when I select the record the dropdownlist has not been populated yet. How can I populate the dropdownlist so I can set the select value.
Thanks,
Eric
<asp:DropDownList ID="ddState" runat="server" SelectedValue='<%# Bind("StateID") %>' /> Thanks,
Eric
4 Answers, 1 is accepted
0
saravanan k
Top achievements
Rank 1
answered on 18 May 2011, 04:42 AM
Hi Eric,
You can bind it like this,
SelectedValue='<%# DataBinder.Eval(Container, "DataItem.
Regards,
Saravanan K
You can bind it like this,
SelectedValue='<%# DataBinder.Eval(Container, "DataItem.
StateID")%>'Regards,
Saravanan K
0
Princy
Top achievements
Rank 2
answered on 18 May 2011, 05:55 AM
Hello Eric,
I am not quite sure about the way you populated DropDownList. Here is the method I tried which worked fine as expected. Hope this helps you.
C#:
Another suggestion is to use Dropdown column which is available as inBuilt in RadGrid .When in browser mode, GridDropDownColumn looks and behaves like a standard GridBoundColumn. When in edit mode, however, it displays a drop-down control for each edited cell in the column. Check the following help documentation which explains more about this.
Column types.
Thanks,
Princy.
I am not quite sure about the way you populated DropDownList. Here is the method I tried which worked fine as expected. Hope this helps you.
C#:
protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e) { if (e.Item is GridEditFormItem && e.Item.IsInEditMode) { DropDownList dropdown = (e.Item as GridEditFormItem)["TemplateColumnUniqueName"].FindControl("DropDownList1") as DropDownList; dropdown.DataSource =//set the datasource here dropdown.DataTextField = //text dropdown.DataBind(); } }Another suggestion is to use Dropdown column which is available as inBuilt in RadGrid .When in browser mode, GridDropDownColumn looks and behaves like a standard GridBoundColumn. When in edit mode, however, it displays a drop-down control for each edited cell in the column. Check the following help documentation which explains more about this.
Column types.
Thanks,
Princy.
0
Eric Klein
Top achievements
Rank 1
answered on 18 May 2011, 01:45 PM
ok here is my grid
and this is how I am loading the state drop down
This works great for insert, but when I edit the grid is not populated in time for the selectedvalue
<telerik:RadGrid ID="FoundationGrid" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" GridLines="None" Skin="Sunset" OnNeedDataSource="FoundationGrid_NeedDataSource" OnItemDataBound="FoundationGrid_ItemDataBound" OnInsertCommand="FoundationGrid_InsertCommand"> <PagerStyle Mode="NextPrevAndNumeric" /> <MasterTableView DataKeyNames="FoundationID" CommandItemDisplay="Top" EditMode="EditForms" PageSize="25"> <Columns> <telerik:GridEditCommandColumn /> <telerik:GridBoundColumn DataField="FoundationID" Visible="false" DataType="System.Guid" /> <telerik:GridBoundColumn DataField="FoundationName" HeaderText="Foundation Name" UniqueName="FoundationName" SortExpression="FoundationName" /> <telerik:GridCheckBoxColumn DataField="Active" HeaderText="Active" DataType="System.Boolean" /> </Columns> <EditFormSettings EditFormType="Template"> <EditColumn UniqueName="EditCommandColumn1"> </EditColumn> <FormTemplate> <table> <tr> <td> Foundation Name: </td> <td> <asp:TextBox ID="tbName" runat="server" Width="365px" Text='<%# Bind("FoundationName") %>' /> </td> </tr> <tr> <td> Address: </td> <td> <asp:TextBox ID="tbAddress1" runat="server" Width="365px" Text='<%# Bind("Address1") %>' /> </td> </tr> <tr> <td> </td> <td> <asp:TextBox ID="tbAddress2" runat="server" Width="365px" Text='<%# Bind("Address2") %>' /> </td> </tr> <tr> <td> City: </td> <td> <asp:TextBox ID="tbCity" runat="server" Text='<%# Bind("City") %>' /> State: <asp:DropDownList ID="ddState" runat="server" SelectedValue='<%# DataBinder.Eval(Container, "DataItem.StateID")%>' /> Zip: <telerik:RadMaskedTextBox ID="rmtbZip" runat="server" Mask="#####-####" Text='<%# Bind("Zip") %>' /> </td> </tr>and this is how I am loading the state drop down
protected void FoundationGrid_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridEditFormInsertItem && e.Item.OwnerTableView.IsItemInserted) { GridEditFormInsertItem item = (GridEditFormInsertItem)e.Item; DropDownList drList = (DropDownList)item.FindControl("ddState"); FoundationDataDataContext db = new FoundationDataDataContext(); var query = from s in db.States.OrderBy(s => s.StateText) select new { s.StateID, StateText = s.StateValue + ": " + s.StateText }; drList.DataSource = query.ToList(); drList.DataTextField = "StateText"; drList.DataValueField = "StateID"; drList.DataBind(); ListItem newState = new ListItem("", ""); drList.Items.Insert(0, newState); } }This works great for insert, but when I edit the grid is not populated in time for the selectedvalue
0
Eric Klein
Top achievements
Rank 1
answered on 18 May 2011, 03:38 PM
Ok I have found one way
protected void FoundationGrid_ItemDataBound(object sender, GridItemEventArgs e) { if ((e.Item.IsInEditMode)) { GridEditFormItem item = (GridEditFormItem)e.Item; DropDownList drList = (DropDownList)item.FindControl("ddState"); FoundationDataDataContext db = new FoundationDataDataContext(); var query = from s in db.States.OrderBy(s => s.StateText) select new { s.StateID, StateText = s.StateValue + ": " + s.StateText }; drList.DataSource = query.ToList(); drList.DataBind(); ListItem newState = new ListItem("", ""); drList.Items.Insert(0, newState); if (e.Item is GridEditFormItem && e.Item.IsInEditMode && !e.Item.OwnerTableView.IsItemInserted) { Guid i = new Guid(e.Item.OwnerTableView.DataKeyValues[0]["FoundationID"].ToString()); Foundation nFoundation = db.Foundations.Single(f => f.FoundationID == i); drList.SelectedValue = nFoundation.StateID.ToString(); } } }This seems kinda hookie, but it does work