Telerik: Невозможно получить выбранное значение Dropdownlist, добавленное в автоматически созданную Radgrid - PullRequest
0 голосов
/ 19 сентября 2019

Я добавил выпадающий список к автоматически сгенерированному RadGrid в коде позади, однако я не могу получить выбранное значение при обновлении строки.Я добавляю выпадающий список следующим образом:

protected void grdAssetImport_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridEditableItem && e.Item.IsInEditMode)
    {
        GridEditableItem edit = (GridEditableItem)e.Item;

        TextBox txt = (TextBox)edit["AssetTypeName"].Controls[0];
        txt.Visible = false;
        DropDownList rddl = new DropDownList();
        PortalView.LookupListBO list = LookupListBA.LookupList_GetByKey(DB_Context, "SITE_ASSETTYPE_LIST", UtilityBA.IsActiveChoice.Active);
        List<PortalView.LookupListItemBO> oList = LookupListBA.LookupListItem_GetList_ByLookupListId(DB_Context, list.LookupListId, (Guid)Current.Employee.SiteId);
        var AssetList = oList.Select(l => new { AssetTypeName = l.Name });
        rddl.ID = "ddlAssetTypeName";

        rddl.AutoPostBack = false;
        rddl.DataSource = AssetList;
        rddl.DataTextField = "AssetTypeName";
        rddl.DataValueField = "AssetTypeName";
        rddl.DataBind();

        edit["AssetTypeName"].Controls.Add(rddl);
    }
}

Я пытался получить выбранное значение в UpdateCommand, но безуспешно:

protected void grdAssetImport_UpdateCommand(object sender, GridCommandEventArgs e)
{
    GridEditableItem editedItem = e.Item as GridEditableItem;
    GridEditManager editMan = editedItem.EditManager;
    foreach (GridColumn column in e.Item.OwnerTableView.RenderColumns)
{
    GridEditableItem editableItem = e.Item as GridEditableItem;
    DropDownList ddl = editableItem.FindControl("ddlAssetTypeName") as DropDownList;
    if(ddl != null)
    {
        string assetType = ddl.SelectedValue;

    }

        DropDownList ddl2 = editableItem["AssetTypeName"].Controls[0] as DropDownList;
        if(ddl2 != null)
        {
            string assetType = ddl.SelectedValue;
        }


    if (column is IGridEditableColumn)
    {
        IGridEditableColumn editableCol = (column as IGridEditableColumn);
        if (editableCol.IsEditable)
        {
            IGridColumnEditor editor = editMan.GetColumnEditor(editableCol);
            string editorText = "unknown";
            object editorValue = null;
            if (editor is GridTextColumnEditor)
            {
                editorText = (editor as GridTextColumnEditor).Text;
                editorValue = (editor as GridTextColumnEditor).Text;
            }
            if (editor is GridBoolColumnEditor)
            {
                editorText = (editor as GridBoolColumnEditor).Value.ToString();
                editorValue = (editor as GridBoolColumnEditor).Value;
            }
            if (editor is GridDropDownColumnEditor)
            {
                editorText = (editor as GridDropDownColumnEditor).SelectedText + "; " +
                 (editor as GridDropDownColumnEditor).SelectedValue;
                editorValue = (editor as GridDropDownColumnEditor).SelectedValue;
            }
            try
            {
                DataRow[] changedRows = this.AssetGridDataSource.Select("Id = " + editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex]["Id"].ToString());
                changedRows[0][column.UniqueName] = editorValue;
                this.AssetGridDataSource.AcceptChanges();
                GetSearchColumns();
            }
            catch (Exception ex)
            {
                // Label1.Text = "<strong>Unable to set value of column '" + column.UniqueName + "'</strong> - " + ex.Message;
                e.Canceled = true;
                break;
            }
        }
    }
}

}

Не находитвыпадающий список, и всегда видит только GridTextColumnEditor столбца, поэтому единственное значение, которое я получаю, - это исходное значение перед режимом редактирования.

Любая помощь приветствуется!

...