Question

I have a radgrid populated with data in double click I launch a rad window manager with texbox that need to fill with the data selected on the radgrid. I fail to get the value of the row. I can only get the index of the selected item.

this is my grid aspx:

<telerik:RadGrid ID="rgBuscar" runat="server" CellSpacing="0" Culture="es-ES"
GridLines="None" Height="469px" Skin="Hay" Width="944px">
<ClientSettings>
    <Scrolling AllowScroll="True" UseStaticHeaders="True" />
</ClientSettings>
<MasterTableView>
    <CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>
    <RowIndicatorColumn Visible="True" FilterControlAltText="Filter RowIndicator column">
         <HeaderStyle Width="20px"></HeaderStyle>
    </RowIndicatorColumn>
    <ExpandCollapseColumn Visible="True" FilterControlAltText="Filter ExpandColumn column">
    <HeaderStyle Width="20px"></HeaderStyle>
    </ExpandCollapseColumn>
    <EditFormSettings>
    <EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn>
    </EditFormSettings>
    <PagerStyle PageSizeControlType="RadComboBox"></PagerStyle>
</MasterTableView>
<ClientSettings>
    <Selecting AllowRowSelect="True" />
    <ClientEvents OnRowDblClick="RowDblClick"/>
</ClientSettings>
<PagerStyle PageSizeControlType="RadComboBox"></PagerStyle>
<FilterMenu EnableImageSprites="False"></FilterMenu>

and my JS:

<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">

<script type="text/javascript">
    function RowDblClick(sender, args) {
        var index = args.get_itemIndexHierarchical();
        sender.get_masterTableView().fireCommand("RowDblClick", index);
    }
</script>

and finally my VB:

Protected Sub rgBuscar_ItemCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles rgBuscar.ItemCommand
    If e.CommandName = "RowDblClick" Then
        Dim var As String = e.CommandArgument
        idValor = e.Item.Cells(2).Text
        MostrarVentana(idValor)
    End If     
End Sub

Public Sub MostrarVentana(ByVal IdCampo As Integer)
    lector = objBd.obtenerConfiguraciones("Cambio Ordenes")
    While lector.Read
        rwmCambio.Windows(0).NavigateUrl = lector("OCON_Url") & "?IdCampo=" & IdCampo
        rwmCambio.Windows(0).Width = Unit.Pixel(lector("OCON_Width"))
        rwmCambio.Windows(0).Height = Unit.Pixel(lector("OCON_Height"))
    End While
    rwmCambio.Windows(0).VisibleOnPageLoad = True
End Sub
Was it helpful?

Solution

Telerik provides a rich API for the RadGrid, by assigning a value to the DataKeyValues (or ClientDataKeyNamesif you want to access them using the Client API rather than posting back) attributes of the MasterTableView you can access the data related to the item through the code; to add multiple columns to the data key collection, separate the column names with a comma.

Example Data Key Definitions:

<MasterTableView  DataKeyNames="idColumnName,foreignKeyColumnName" ClientDataKeyNames="idColumnName,anotherColumnName">

Example OnRowSelected event client-side (JavaScript) event handler:

function OnGridRowSelected(sender, args) {
    var idDataKey = args.getDataKeyValue("idColumnName");
    var nameDataKey = args.getDataKeyValue("idColumnName");
    document.getElementById("myElement").value = "(" + idDataKey + ") " + nameDataKey;
}

Example ItemCommand event server-side (VB) event Handler:

Protected Sub PerformActionOnGridItem(sender As Object, e As Telerik.Web.UI.GridCommandEventArgs) Handles grdCustomerAccountInvoiceSummary.ItemCommand
    If (TypeOf (e.Item) Is Telerik.Web.UI.GridDataItem) Then
        Dim item As Telerik.Web.UI.GridDataItem = CType(e.Item, Telerik.Web.UI.GridDataItem)
        Select Case e.CommandName
            Case "RowDblClick"
                ' Insert required code here 
                ...
                ' Example: Set session variable to data key value
                Session("idColumnName") = item.GetDataKeyValue("idColumnName")
        End Select
    End If
End Sub
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top