This is a migrated thread and some comments may be shown as answers.

RadGrid issues

1 Answer 39 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
Ahmed Ilyas
Top achievements
Rank 1
Ahmed Ilyas asked on 02 Feb 2013, 01:42 AM
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();
 
                }
            }
        }














1 Answer, 1 is accepted

Sort by
0
Jayesh Goyani
Top achievements
Rank 2
answered on 03 Feb 2013, 04:44 PM
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
Tags
General Discussions
Asked by
Ahmed Ilyas
Top achievements
Rank 1
Answers by
Jayesh Goyani
Top achievements
Rank 2
Share this question
or