RadGrid issues

2 posts, 0 answers
  1. Ahmed Ilyas
    Ahmed Ilyas avatar
    51 posts
    Member since:
    Feb 2010

    Posted 01 Feb 2013 Link to this post

    I am not sure why its complicated or maybe im misunderstanding.

    I have a custom datasource.
    I programmatically add columns and then on ItemDataBound, I get the currentItem and bind the values from the custom object (currentItem) to the columns in the current row being bound. Great.

    But now, I want to retrieve the values (potentially modified values) on an "Update" Command.
    So I have an OnItemCommand and it does fire.
    However, when trying to retrieve the value, I only get an empty HTML space even though the value is there.

    Any ideas where I am going wrong?

    protected void radGridMenus_OnItemCommand(object sender, GridCommandEventArgs e)
            {
                GridDataItem currentRow = e.Item as GridDataItem;
                if (currentRow != null)
                {
                    switch (e.CommandName.ToLower().Trim())
                    {
                        case "update":
                                // currentRow["MenuID"].Value - here it is   Not sure why?
                            break;
                        default:
                            break;
                    }
                }
            }


    Full code:

            protected void Page_Init(object sender, EventArgs e)
            {
                this.DoSetDefaultMenuColumns();
            }
     
            private void DoSetDefaultMenuColumns()
            {
                // lets create the columns.
                GridBoundColumn menuIDColumn = new GridBoundColumn();
                menuIDColumn.HeaderText = "Menu ID";
                menuIDColumn.DataField = "MenuID";
     
                GridBoundColumn menuNameColumn = new GridBoundColumn();
                menuNameColumn.HeaderText = "Menu Name";
                menuNameColumn.DataField = "MenuName";
     
                GridDropDownColumn menuOrderColumn = new GridDropDownColumn();
                menuOrderColumn.HeaderText = "Menu Order ID";
                menuOrderColumn.DataField = "MenuOrderID";
     
                GridDropDownColumn parentIDColumn = new GridDropDownColumn();
                parentIDColumn.HeaderText = "Parent ID";
                parentIDColumn.DataField = "ParentID";
     
                GridCheckBoxColumn isAdminColumn = new GridCheckBoxColumn();
                isAdminColumn.HeaderText = "Is Admin";
                isAdminColumn.DataField = "IsAdmin";
     
                GridBoundColumn pageURLColumn = new GridBoundColumn();
                pageURLColumn.HeaderText = "Page URL";
                pageURLColumn.DataField = "PageURL";
     
                GridCheckBoxColumn employeeAccessColumn = new GridCheckBoxColumn();
                employeeAccessColumn.HeaderText = "Employee Access";
                employeeAccessColumn.DataField = "EmployeeAccess";
     
                GridCheckBoxColumn customerAccessColumn = new GridCheckBoxColumn();
                customerAccessColumn.HeaderText = "Customer Access";
                customerAccessColumn.DataField = "CustomerAccess";
     
                GridButtonColumn updateColumn = new GridButtonColumn();
                updateColumn.ButtonType = GridButtonColumnType.LinkButton;
                updateColumn.HeaderText = "Update";
                updateColumn.Text = "Update Menu Item";
                updateColumn.UniqueName = "UpdateMenuItem";
                updateColumn.CommandName = "Update";
                updateColumn.ItemStyle.ForeColor = Color.Blue;
                 
                this.radGridMenus.MasterTableView.Columns.Add(menuIDColumn);
                this.radGridMenus.MasterTableView.Columns.Add(menuNameColumn);
                this.radGridMenus.MasterTableView.Columns.Add(menuOrderColumn);
                this.radGridMenus.MasterTableView.Columns.Add(parentIDColumn);
                this.radGridMenus.MasterTableView.Columns.Add(pageURLColumn);
                this.radGridMenus.MasterTableView.Columns.Add(isAdminColumn);
                this.radGridMenus.MasterTableView.Columns.Add(employeeAccessColumn);
                this.radGridMenus.MasterTableView.Columns.Add(customerAccessColumn);
                this.radGridMenus.MasterTableView.Columns.Add(updateColumn);
            }
     
    protected void radGridMenus_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
            {
                if (!e.IsFromDetailTable)
                {
                    this.radGridMenus.DataSource = this.CurrentMenuItemsView; // List<T>
                }
            }
     
     protected void radGridMenus_OnItemCommand(object sender, GridCommandEventArgs e)
            {
                GridDataItem currentRow = e.Item as GridDataItem;
                if (currentRow != null)
                {
                    switch (e.CommandName.ToLower().Trim())
                    {
                        case "update":
     
                            break;
                        default:
                            break;
                    }
                }
            }
     
            protected void radGridMenus_OnItemDataBound(object sender, GridItemEventArgs e)
            {
                if (e.Item is GridDataItem)
                {
                    GridDataItem currentItem = e.Item as GridDataItem;
                    var currentMenu = currentItem.DataItem as MProSoftwareMenus;
                    if (currentMenu != null)
                    {
                        if (currentMenu.ParentID.HasValue)
                        {
                            currentItem["ParentID"].Text = currentMenu.ParentID.Value.ToString();
                        }
     
                        if (currentMenu.MenuOrderID.HasValue)
                        {
                            currentItem["MenuOrderID"].Text = currentMenu.MenuOrderID.Value.ToString();
                        }
                            
                        ((CheckBox)currentItem["IsAdmin"].Controls[0]).Checked = currentMenu.IsAdmin.GetValueOrDefault(false);
     
                        ((LinkButton)currentItem["UpdateMenuItem"].Controls[0]).CommandArgument = currentMenu.MenuID.ToString();
     
                    }
                }
            }














  2. Jayesh Goyani
    Jayesh Goyani avatar
    2733 posts
    Member since:
    May 2010

    Posted 03 Feb 2013 Link to this post

    Hello,


    please try with below code snippet.

      private void DoSetDefaultMenuColumns()
            {
                // lets create the columns.
                GridBoundColumn menuIDColumn = new GridBoundColumn();
                menuIDColumn.HeaderText = "Menu ID";
                menuIDColumn.DataField = "MenuID";
                menuIDColumn.UniqueName ="MenuID"; // Added new
    ......
    .........
    protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
            {
               
                if (e.Item is GridEditableItem && e.Item.IsInEditMode)
                {
                    
                        // update
                        GridEditableItem item = e.Item as GridEditableItem;
                        (item["MenuID"].Controls[0] as TextBox).Text; // access your text here
                    }
                 
            }

    Thanks,
    Jayesh Goyani
Back to Top