I may be wrong but it seems to me that the only way to populate a drop down column in a grid is with databinding. Is there a way to poopulate the items as follows:
combobox.items.add("First Item");
combobox.items.add("Second Item");
etc.
I don't need to populate from tables for each drop down column.
Regards, Lee
combobox.items.add("First Item");
combobox.items.add("Second Item");
etc.
I don't need to populate from tables for each drop down column.
Regards, Lee
10 Answers, 1 is accepted
0
Elliott
Top achievements
Rank 2
answered on 14 Jan 2011, 09:46 PM
Lee - from the standpoint of good program design, use an template
the Item Template should be just a label bound to the current value
the Edit Item Template should be the drop down
since the Edit Item Template isn't created until an edit command is issued for that row it can be a drop down with ListItems
do you need code to demonstrate?
the Item Template should be just a label bound to the current value
the Edit Item Template should be the drop down
since the Edit Item Template isn't created until an edit command is issued for that row it can be a drop down with ListItems
do you need code to demonstrate?
0
Andy
Top achievements
Rank 1
answered on 14 Jan 2011, 10:03 PM
Hi Lee,
Here are the code if you want to populate data for Dropdown List in ItemTemplate
VB.NET
Andy.
Here are the code if you want to populate data for Dropdown List in ItemTemplate
<
telerik:GridTemplateColumn
UniqueName
=
"Uname"
HeaderText
=
"Header Text
"
>
<
ItemTemplate
>
<
asp:DropDownList
ID
=
"myDD"
Font-Size
=
"XX-Small"
runat
=
"server"
>
</
asp:DropDownList
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
VB.NET
Protected
Sub
radGrid1_ItemCreated(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridItemEventArgs)
Handles
radGrid1.ItemCreated
If
TypeOf
e.Item
Is
GridDataItem
Then
Dim
myDD
As
DropDownList
myDD =
DirectCast
(item(
"Uname"
).FindControl(
"myDD"
), DropDownList)
' Then add Data
End
If
End
Sub
Andy.
0
Lee
Top achievements
Rank 1
answered on 17 Jan 2011, 09:13 PM
Thanks Andy,
I have added the Drop Down and I am able to set the value of the Drop Down List in the ItemDataBound method. My last question is how do I save the new value back to the Table. I have been testing the the UpdateCommand method but have not had any luck so far.
Regards, Lee
I have added the Drop Down and I am able to set the value of the Drop Down List in the ItemDataBound method. My last question is how do I save the new value back to the Table. I have been testing the the UpdateCommand method but have not had any luck so far.
Regards, Lee
0
Elliott
Top achievements
Rank 2
answered on 17 Jan 2011, 09:16 PM
is the grid correctly bound?
does it have the needsdatasource event instantiated?
before you go nutz check that first
does it have the needsdatasource event instantiated?
before you go nutz check that first
0
Lee
Top achievements
Rank 1
answered on 17 Jan 2011, 09:18 PM
Thanks Marianne
I did what you suggested. The last question is how to save the selected value back to the table. I have been testing with the updatecommand method but have not been successful so far. Here's the current code:
Here's the CS
Can you stear me in the right direction on the update?
Regards, Lee
I did what you suggested. The last question is how to save the selected value back to the table. I have been testing with the updatecommand method but have not been successful so far. Here's the current code:
<
telerik:GridTemplateColumn
FilterControlAltText
=
"Filter Access column"
HeaderText
=
"Access"
UniqueName
=
"Access"
>
<
ItemTemplate
>
<
asp:Label
CssClass
=
"label"
ID
=
"lblContainer"
runat
=
"server"
Text='<%# Eval("FormAccess") >'></
asp:Label
>
</
ItemTemplate
>
<
EditItemTemplate
>
<
asp:DropDownList
CssClass
=
"dropdownlist"
ID
=
"ddlContainer"
runat
=
"server"
></
asp:DropDownList
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
Here's the CS
protected void RadGrid2_ItemDataBound(object sender, GridItemEventArgs e)
{
if ((e.Item is GridDataItem) && e.Item.IsInEditMode)
{
GridDataItem item = e.Item as GridDataItem;
DropDownList myDD = item.FindControl("ddlContainer") as DropDownList;
myDD.Items.Add("View");
myDD.Items.Add("Modify");
myDD.Items.Add("Denied");
GridEditableItem editForm = (GridEditableItem)e.Item;
myDD.SelectedValue = ((System.Data.DataRowView)(editForm.DataItem)).Row.ItemArray[3].ToString().Trim();
}
}
protected void RadGrid2_UpdateCommand(object sender, GridCommandEventArgs e)
{
// trying to update value here.....
}
Can you stear me in the right direction on the update?
Regards, Lee
0
Lee
Top achievements
Rank 1
answered on 17 Jan 2011, 10:37 PM
Hi Marianne,
The grid seems to be bound porperly. Everything is saving except the value for the DropDownList in the Template column. Should it save automatically
Regards, Lee
The grid seems to be bound porperly. Everything is saving except the value for the DropDownList in the Template column. Should it save automatically
Regards, Lee
0
Elliott
Top achievements
Rank 2
answered on 17 Jan 2011, 10:44 PM
where is the FormAccess datafield for the lblContainer coming from? It needs to be the same value as
e.Item.Row.ItemArray[3]
e.Item.Row.ItemArray[3]
0
Lee
Top achievements
Rank 1
answered on 17 Jan 2011, 10:49 PM
The datafield for the lblcontainer and the e.Item.Row.ItemArray[3] are the same. The ddl is set properly, saving the changed value is the challenge.
0
Elliott
Top achievements
Rank 2
answered on 17 Jan 2011, 11:06 PM
try setting AutoPostBack to true
then try to trigger a server event on SelectedValueChanged, which will then update the database (access file?, XML file?) corresponding to that field
I realize the problem is that the drop down is not coming from any database
that means you will have to store the changed value somewhere on the screen
then try to trigger a server event on SelectedValueChanged, which will then update the database (access file?, XML file?) corresponding to that field
I realize the problem is that the drop down is not coming from any database
that means you will have to store the changed value somewhere on the screen
0
Lee
Top achievements
Rank 1
answered on 19 Jan 2011, 09:09 PM
OK, I have the entire solution based on what Marianne provided and another post in the forums. If someone else needs the entire solution here it is:
Create a form with a rad grid and a hidden field.
Edit the Update and Insert Query for the Datasource to use the hidden field as the parameter for the field you want the drop down list to populate.
For the drop down list make the column a template column
It needs to contain an ItemTemplate and an EditTemplate as in the code snippet.
In the ItemDataBound, InsertCommand and UpdateCommand events for the RadGrid put the following code:
Done.
Create a form with a rad grid and a hidden field.
Edit the Update and Insert Query for the Datasource to use the hidden field as the parameter for the field you want the drop down list to populate.
For the drop down list make the column a template column
<
telerik:GridTemplateColumn
FilterControlAltText
=
"Filter DistType column"
HeaderText
=
"Type"
UniqueName
=
"DistType"
>
<
ItemTemplate
>
<
asp:Label
id
=
"Label1"
runat
=
"server"
>
<%# DataBinder.Eval(Container.DataItem, "DistributionType")%>
</
asp:Label
>
</
ItemTemplate
>
<
EditItemTemplate
>
<
asp:DropDownList
id
=
"DistTypeDDL"
runat
=
"server"
/>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
It needs to contain an ItemTemplate and an EditTemplate as in the code snippet.
In the ItemDataBound, InsertCommand and UpdateCommand events for the RadGrid put the following code:
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
GridEditableItem item = e.Item as GridEditableItem;
// access/modify the edit item template settings here
DropDownList list = item.FindControl("DistTypeDDL") as DropDownList;
list.Items.Add("Repairs");
list.Items.Add("Supplies");
list.Items.Add("Equipment Sales");
list.Items.Add("Freight");
list.Items.Add("Tax");
GridEditableItem editForm = (GridEditableItem)e.Item;
string CurrentType;
try
{
CurrentType = ((System.Data.DataRowView)(editForm.DataItem)).Row.ItemArray[4].ToString();
if (CurrentType != null)
{
list.SelectedValue = CurrentType.Trim();
}
}
catch
{
}
}
}
protected void RadGrid1_InsertCommand(object sender, GridCommandEventArgs e)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
DropDownList list = editedItem.FindControl("DistTypeDDL") as DropDownList;
NewType.Value = list.SelectedValue;
}
protected void RadGrid1_UpdateCommand(object sender, GridCommandEventArgs e)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
DropDownList list = editedItem.FindControl("DistTypeDDL") as DropDownList;
NewType.Value = list.SelectedValue;
}
Done.