我在编辑模式下显示Telerik RadGrid EditItemTemplate列中的asp下拉列表选定值时遇到问题。当我在一行进入编辑模式时,没有显示下拉列表的选定值。下拉列表工作它只是不显示当前数据。下面是我的RadGrid列布局。
<Columns>
<telerik:GridEditCommandColumn></telerik:GridEditCommandColumn>
<telerik:GridBoundColumn DataField="ContactID" HeaderText="ContactID" ReadOnly="true" UniqueName="ContactID" AllowFiltering="false"
DataType="System.Int16" DefaultInsertValue="" Exportable="false" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Contact" HeaderText="Contact" SortExpression="Contact" UniqueName="Contact"></telerik:GridBoundColumn>
<telerik:GridTemplateColumn UniqueName="ContactTemplateColumn" HeaderText="Contact Type">
<ItemTemplate>
<asp:Label ID="Contact" runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "Contact") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlContacts" runat="server" DataTextField="ContactType" DataValueField="ContactTypeID"></asp:DropDownList>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridButtonColumn ConfirmText="Delete this contact?" ConfirmDialogType="RadWindow"
ConfirmTitle="Delete" ButtonType="ImageButton" ImageUrl="~/Images/filterCancel.gif" Text="Delete" CommandName="Delete" Exportable="false" />
</Columns>
我已将下面显示的代码放在RAdGrid_ItemCommand方法中,其中计划是在呈现编辑表单时,角色的选定值将显示在Label中。但是我收到一条错误消息“”对象引用未设置为对象的实例。“我认为问题是我找不到标签User Control。
if (ItemCommand == "Edit")
{
using (ExpungeEntities db = new ExpungeEntities())
{
var editableItem = ((GridEditableItem)e.Item);
var strUserId = (int)editableItem.GetDataKeyValue("UserID");
var d = db.USERS_T_DATA.SingleOrDefault(c => c.UserID == strUserId);
string strRole = d.Role;
(editableItem.FindControl("lblRole") as Label).Text = strRole.Trim();
}
}
有人可以帮我解决一下如何在EditItemTemplate中显示ASP下拉列表的选定值吗?
答案 0 :(得分:0)
我发现我在错误的位置应用代码。我需要把它放在ONItemDataBound方法中。然后我可以绑定下拉列表。我还必须添加代码以在同一方法中显示现有记录的选定值。请参阅下面适用于我的情况的代码。
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
//populate the drop down list
using (ExpungeEntities db = new ExpungeEntities())
{
var roles = db.Roles.Select(r => new { r.RoleData, r.RoleText }).ToList();
GridEditableItem item2 = e.Item as GridEditableItem;
DropDownList list = item2.FindControl("ddlRole") as DropDownList;
list.DataTextField = "RoleText";
list.DataValueField = "RoleData";
list.DataSource = roles;
list.DataBind();
}
// Show the current role assigned from the database
GridEditableItem item = (GridEditableItem)e.Item;
DropDownList ddl = (DropDownList)item.FindControl("ddlRole");
ddl.SelectedValue = DataBinder.Eval(e.Item.DataItem, "Role").ToString();
}
}