【问题标题】:Not able to set the Text Value of a Label in A RadGrid EditTemplate column无法在 RadGrid EditTemplate 列中设置标签的文本值
【发布时间】:2025-11-28 22:00:02
【问题描述】:

我在编辑模式下在 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 方法中,计划是在呈现编辑表单时,角色的选定值将显示在标签中。但是我收到一条错误消息““对象引用未设置为对象的实例。”我认为问题是我没有找到标签用户控件。

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 下拉列表的选定值?

【问题讨论】:

  • 对不起,你能编辑你的帖子吗? aspx 代码似乎不正确。你的下拉列表在哪里?
  • @AlexandruPopa 感谢您的回复。我已经找到解决方案并将其作为答案发布。
  • 感谢@AlexandruPopa 我已经编辑了我的帖子并现在显示所有列。下面显示的答案适用于不同的情况,不适用于此问题。下面的一个是绑定一个下拉

标签: gridview telerik radgrid radgridview


【解决方案1】:

我发现我在错误的位置应用了代码。我需要把它放在 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();

        }


    }

【讨论】:

  • 我在更新记录时绑定下拉列表或获取新值没有问题。我的问题出现在 On Item Update 命令中。它找到了 Dropdown 控件,但似乎找不到 Label 控件。