Невозможно установить текстовое значение метки в столбце RadGrid EditTemplate. - PullRequest
0 голосов
/ 27 апреля 2018

У меня проблема с отображением выбранного значения выпадающего списка asp в столбце Telerik RadGrid EditItemTemplate в режиме редактирования. Когда я вхожу в режим редактирования в строке, выбранное значение для раскрывающегося списка не отображается. Раскрывающийся список работает, он просто не показывает текущие данные. Ниже мой макет столбца 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, где план был, когда форма редактирования была визуализирована, выбранное значение для роли будет отображаться в метке. Однако я получаю сообщение об ошибке "" Ссылка на объект не установлена ​​на экземпляр объекта. "Я думаю, что проблема в том, что я не нахожу метку 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();

            }

        }

Может ли кто-нибудь помочь мне и дать решение о том, как я могу показать выбранное значение для раскрывающегося списка ASP в EditItemTemplate?

1 Ответ

0 голосов
/ 30 апреля 2018

Я обнаружил, что применяю код в неправильном месте. Мне нужно было поместить его в метод 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();

        }


    }
...