无法在RadGrid EditTemplate列中设置标签的文本值

时间:2018-04-27 12:55:29

标签: gridview telerik radgrid radgridview

我在编辑模式下显示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下拉列表的选定值吗?

1 个答案:

答案 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();

        }


    }