- ASP code:
<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="False"
EditMode="InPlace" CommandItemDisplay="Top"
CssClass="grid" Skin="Web20"
AllowPaging="True" PageSize="20" Width="600px"
>
<MasterTableView DataKeyNames="lRowID" CommandItemDisplay="Top" EditMode="InPlace">
<Columns>
<telerik:GridEditCommandColumn ButtonType="ImageButton"></telerik:GridEditCommandColumn>
<telerik:GridBoundColumn Visible="false" DataField="LRowID" ></telerik:GridBoundColumn>
<telerik:GridBoundColumn Visible="false" DataField="sObjectName" ></telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Section" DataField="col1" ReadOnly="true" ></telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Form" DataField="col2" ReadOnly="true" ></telerik:GridBoundColumn>
<telerik:GridTemplateColumn HeaderText="Permissions" UniqueName="Permissions">
<ItemTemplate>
<asp:Label ID="lblPerms" runat="server"></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlPerms" runat="server">
<asp:ListItem Value=0>None</asp:ListItem>
<asp:ListItem Value=1>Read Only</asp:ListItem>
<asp:ListItem Value=2>Full</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
Code behind:
First, we bind the combobox in the ItemDatabound event:
Protected Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs)
Handles RadGrid1.ItemDataBound
If (TypeOf e.Item Is GridEditableItem AndAlso e.Item.IsInEditMode) Then
'if this line is in edit mode
Dim item As GridEditableItem = e.Item
'access/modify the edit item template settings here
Dim list As DropDownList = item.FindControl("ddlPerms")
'list.DataSource = getPermValues()
'list.DataBind()
list.SelectedValue = e.Item.DataItem("intPerms")
ElseIf (TypeOf e.Item Is GridDataItem AndAlso Not e.Item.IsInEditMode AndAlso Page.IsPostBack) Then
'if this line is not in edit mode
Dim item As GridDataItem = e.Item
Dim label As Label = item.FindControl("lblPerms")
label.Text = e.Item.DataItem("strPerms")
End If
End Sub
This code will handle the update. We show how to retrieve data from the template column and the other columns
Protected Sub RadGrid1_UpdateCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs)
Handles RadGrid1.UpdateCommand
'get a reference to the line
Dim editedItem As GridEditableItem = CType(e.Item, GridEditableItem)
'get a reference to the ddl in the template control
Dim ddlPerms As DropDownList = editedItem.FindControl("ddlPerms")
Dim intPerms As Int16 = ddlPerms.SelectedValue
'get a hash table, and get the other column values
Dim oHashTable As Hashtable = New Hashtable
e.Item.OwnerTableView.ExtractValuesFromItem(oHashTable, editedItem)
'this datatable is the same as our datasource, but with no data in it
Dim oDT As DataTable = dynData.SPs.FP_Hierarchy_SEL(-1, AppUser.strLastDB).getTable
'by doing 'new row', we get exactly one row
Dim oRow As DataRow = oDT.NewRow
'start editing that row
oRow.BeginEdit()
Try
'loop through the hash table, assigning values to the data table
For Each entry As DictionaryEntry In oHashTable
oRow(CType(entry.Key, String)) = entry.Value
Next
oRow.EndEdit()
'retrieve one value from the datarow
Dim intRowID As System.Int64 = oRow("lRowID").ToString()
'or
Dim intRowID As System.Int64 = editedItem.OwnerTableView.DataKeyValues(e.Item.ItemIndex)("dex_row_id")'case sensative
'business logic
Dim bFullPerms As Boolean = False
Dim bReadPerms As Boolean = False
Select Case intPerms
Case 1
bReadPerms = True
Case 2
bFullPerms = True
End Select
If bFullPerms And bReadPerms Then
Exit Sub
End If
'update the underlying dataset
dynData.SPs._4P_OEDGroups_UPD(Session("GroupID"), intRowID,
bFullPerms, bReadPerms, AppUser.strLastDB).execute()
'rebind the grie
Me.RadGrid1.Rebind()
Catch ex As Exception
oRow.CancelEdit()
e.Canceled = True
End Try