【问题标题】:RadGrid populate drop down in insert/edit modeRadGrid 在插入/编辑模式下填充下拉列表
【发布时间】:2011-05-22 13:02:04
【问题描述】:
我有一个具有插入和编辑功能的 RadGrid。
其中一个字段是下拉列表。
我的要求是
- 当用户单击“添加新”时,我希望能够更改下拉列表中的一些属性并在数据时填充它
- 当用户编辑一行时,我需要更改下拉列表的选定索引以显示正在编辑的数据并禁用它。
我需要以某种方式处理其中一个网格事件,确定它是否处于插入/编辑模式,然后使用 FindControl 访问我的下拉菜单。
我查看了许多事件,例如 ItemCommand、DataBound、ItemCreated 等,但我只是不知道如何访问我的下拉菜单?我需要知道我需要调用哪个对象来找到我的下拉菜单。
谢谢。
【问题讨论】:
标签:
asp.net
telerik
radgrid
telerik-grid
【解决方案1】:
从this doc 开始,记住要确定插入/更新操作,可以分别检查网格的GridTableView.IsItemInserted 属性和EditItems 集合。更改项目值或禁用下拉列表的适当事件是 ItemDataBound 和 ItemCreated。
【解决方案2】:
您可以尝试使用 GridDropDownColumn 在网格内创建一个下拉列,该列在编辑或插入模式下自动填充下拉列表。示例:
<telerik:GridDropDownColumn UniqueName="ParamType" DataField="ParamType" HeaderText="Parameter type" HeaderStyle-HorizontalAlign="Center" DropDownControlType="RadComboBox" ListDataMember="ParamType" ListTextField="ParamType" ListValueField="ParamType">
</telerik:GridDropDownColumn>
您可以填充数据或访问ItemDataBound 事件内的下拉框。示例:
protected void GvParametersItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
//bind data to ddl in edit mode
GridEditableItem editedItem = e.Item as GridEditableItem;
GridEditManager editMan = editedItem.EditManager;
GridDropDownListColumnEditor editor = (GridDropDownListColumnEditor)(editMan.GetColumnEditor("DropDownColumnUniqueName"));
RadComboBox ddList = editor.ComboBoxControl;
ddList.RenderMode = Telerik.Web.UI.RenderMode.Auto;
ddList.OnClientSelectedIndexChanged = "OnClientSelectedParamerterIndexChanged";
ddList.DataTextField = Constants.DataTextField;
ddList.DataValueField = Constants.DataValueField;
ddList.DataSource = GetParameterTypes();
ddList.DataBind();
}
}