Cannot get Selected Value of Dropdownlist Added to Grid in Code behind

2 posts, 0 answers
  1. Beryl
    Beryl avatar
    12 posts
    Member since:
    Sep 2019

    Posted 19 Sep 2019 Link to this post

    I added a dropdownlist to an autogenerated grid in code behind, however, I am unable to get the selected value when the row is updated.  I add the dropdownlist as follows:

    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);
        }
    }

     

     

    I try to use the follow update command, but neither attempt to capture the dropdownlist works and when it gets to the actual column it only sees the textbox in the column and never finds the dropdownlist at all:

    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;
                    }
                }
            }
        }
    }

     

    Any assistance is greatly appreciated as I am on day 4 of trying to get this working.

  2. Eyup
    Admin
    Eyup avatar
    3917 posts

    Posted 24 Sep 2019 Link to this post

    Hello Beryl,

     

    I've already provided a reply to your query in the other forum thread:

    https://www.telerik.com/forums/radgrid-auto-generated-edit-mode-drop-down-list-selection-not-binding-to-database#HiPNm7wf2UeUIE0oNcyQYA

     

    In addition to the samples and suggestions there, you can try these 2 things:

     

    1. Ensure that the EditMode of the MasterTableView tag is not set to Batch

    2. Send us the aspx mark-up definition so we can see the DropDownList code - try removing settings like AllowCustomText or EnableLoadOnDemand

    3. Send us an entire runnable sample as suggested in the other forum post so we modify it accordingly to fix the issues and send it back to us.

     

    Regards,
    Eyup
    Progress Telerik

    Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
Back to Top