I diamically added 2 columns to the grid when page load, one GridHTMLEditorColumn is editable and another one is enabled=false, how I get both Radedit value (edited value and enabled=false's cell value) on InsertCommand and UpdateCommand?
On form load:
GridHTMLEditorColumn boundColumn = new GridHTMLEditorColumn();
// GridBoundColumn boundColumn = new GridBoundColumn();
this.rgLanguages.MasterTableView.Columns.Add(boundColumn);
// this.rgLanguages.MasterTableView.Columns.Add(cBox.Text);
boundColumn.DataField = cBox.Text;
boundColumn.HeaderText = cBox.Text;
boundColumn.UniqueName = cBox.Value;
rgLanguages_InsertCommand;:
I tried (editedItem["English"].Controls[0] as RadEditor).Text to get value, it only works for NONE dinamically creaded value, but not work for dinamically created column.
How I get both editeable value and enbaled =false's Radedit value here?Thank,
Jessie
:
6 Answers, 1 is accepted
You can extract values from the grid in this way:
if(e.Item is GridEditableItem) { GridEditableItem gridEditedItem = e.Item as GridEditableItem; TableCell cell = editedItem["ColumnUniqueName"]; string itemValue = (cell.Controls[0] as TextBox).Text; }You can use similar logic in the ItemCommand (ItemDatabound) events when the grid is in forms edit mode. More information may be found in the following help article.
You can also extract the values from the edit form using the ExtractValuesFromItem method of the GridTableView:
protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e) { if (e.CommandName == RadGrid.UpdateCommandName) { if (e.Item is GridEditableItem) { GridEditableItem editedItem = e.Item as GridEditableItem; //here editedItem.SavedOldValues will be the dictionary which holds the //predefined values //Prepare new dictionary object Hashtable newValues = new Hashtable(); e.Item.OwnerTableView.ExtractValuesFromItem(newValues, editedItem); //the newValues instance is the new collection of key -> value pairs //with the updated ny the user data } } } Currently the grid have limitation on adding GridHTMLEditorColumn programmatically on Page_Load event but this will be fixed in the next internal build.
Let me know if you have any other questions.
Regards,
Marin
the Telerik team
if(e.Item is GridEditableItem){ GridEditableItem gridEditedItem = e.Item as GridEditableItem; TableCell cell = editedItem["ColumnUniqueName"]; string itemValue = (cell.Controls[0] as TextBox).Text;}However, some of our textbox controls are returning with the following error: "Specified argument was out of the range of valid values."
When I put a break on this line:
"string itemValue = (cell.Controls[0] as TextBox).Text", and try to see the control count for this cell, I get 0. However, we can see the textbox for the column on the screen, we can change the value in this textbox, but we cannot access it using this code.
We have three columns that have this issue. Their names are "UserID", "Disabled", and "Email"
Any help would be greatly appreciated.
Thanks.
If you are using EditMode="EditForms/PopUp", try the following code snippet.
C#:
if (e.Item is GridEditFormItem && e.Item.IsInEditMode) { GridEditFormItem gridEditedItem = e.Item as GridEditFormItem; TableCell cell = gridEditedItem["ColumnUniqueName"]; string itemValue = (cell.Controls[0] as TextBox).Text; }And if you are using InPlace EditMode, try the following:
if (e.Item is GridEditableItem && e.Item.IsInEditMode) { GridEditableItem gridEditedItem = e.Item as GridEditableItem; TableCell cell = gridEditedItem["ColumnUniqueName"]; string itemValue = (cell.Controls[0] as TextBox).Text; }Hope this helps,
Princy.
Indeed the actual code snippet depends on the EditMode you are using. Follow Princy's examples and see if they help. Also additional information on accessing cells and rows can be found in this help article.
Best wishes,Marin
the Telerik team
Thank you for the help, but we get the same error either way. I am posting some of my code below. Does anything look out of place?
ASPX:
<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="true" AutoGenerateDeleteColumn="True" AutoGenerateEditColumn="True" GridLines="None"> <MasterTableView DataKeyNames="ID" EditMode="EditForms"> </MasterTableView></telerik:RadGrid>VB:
If (TypeOf e.Item Is GridEditFormItem And e.Item.IsInEditMode) Then Dim gridediteditem As GridEditFormItem = CType(e.Item, GridEditFormItem) Dim cell As TableCell ' This works cell = gridediteditem("id") Dim id As String = CType(cell.Controls(0), TextBox).Text cell = gridediteditem("UserID") Dim UserID As String = CType(cell.Controls(0), TextBox).Text cell = gridediteditem("RealName") Dim RealName As String = CType(cell.Controls(0), TextBox).Text cell = gridediteditem("secflag") Dim secflag As String = CType(cell.Controls(0), TextBox).Text cell = gridediteditem("lastdate") Dim lastdate As String = CType(cell.Controls(0), TextBox).Text cell = gridediteditem("Disabled") Dim Disabled As String = CType(cell.Controls(0), TextBox).Text cell = gridediteditem("Email") Dim Email As String = CType(cell.Controls(0), TextBox).Text End IfAlso, I just used a hashtable, and the data from userid pulls in, but I'm still trying to figure out how to get all this information out using this method. I had hoped that using the above method would work, but it doesn't seem to.
If (TypeOf e.Item Is GridEditFormItem And e.Item.IsInEditMode) Then Dim gridediteditem As GridEditFormItem = CType(e.Item, GridEditFormItem) Dim newValues As Hashtable = New Hashtable e.Item.OwnerTableView.ExtractValuesFromItem(newValues, gridediteditem) Dim id As String If newValues.Item("id") = Nothing Then id = "" Else id = newValues.Item("id").ToString() End If Dim UserID As String If newValues.Item("UserId") = Nothing Then UserID = "" Else UserID = newValues.Item("UserId").ToString() End If Dim RealName As String If newValues.Item("RealName") = Nothing Then RealName = "" Else RealName = newValues.Item("RealName").ToString() End If Dim secflag As String If newValues.Item("secflag") = Nothing Then secflag = "" Else secflag = newValues.Item("secflag").ToString() End If Dim lastdate As String If newValues.Item("lastdate") = Nothing Then lastdate = "" Else lastdate = newValues.Item("lastdate").ToString() End If Dim Disabled As String If newValues.Item("disabled") = Nothing Then Disabled = "" Else Disabled = newValues.Item("disabled").ToString() End If Dim Email As String = newValues.Item("email").ToString() If newValues.Item("email") = Nothing Then Email = "" Else Email = newValues.Item("email").ToString() End If MsgBox("Changing" & id & "/" & UserID & "/" & RealName & "/" & secflag & "/" & Disabled & "/" & Email & "/" & lastdate) 'MsgBox(id & "/" & UserID & "/" & RealName & "/" & secflag & "/" & Disabled & "/" & Email) End IfThanks for your help.