2011-11-28 23 views
5

Ho un problema con la funzione get_selectedItems(). Uso RadGrid da Telerik. Grandi controlli, ma ora mi sono imbattuto in un bug che non riesco a risolvere.get_selectedItems() [0] su RadGrid restituisce null

Quando si seleziona una riga, chiamo la funzione RowSelectionChanged sul lato client e quindi otterrò un'eccezione.

Qualcuno potrebbe dirmi perché sender.get_selectedItems()[0] è nullo mentre sender.get_selectedItems().length è almeno 1?

<telerik:RadCodeBlock runat="server" ID="RadCodeBlock1"> 
    <script type="text/javascript"> 

      function RowSelectionChanged(sender, eventArgs) { 
      if (sender != null) { 
       for (i = 0; i < sender.get_selectedItems().length; i++) { 
        var it = sender.get_selectedItems()[i];  // it is null 
          var element =it.get_element(); // throws exception 
        } 
       } 
      } 
    </script> 

</telerik:RadCodeBlock> 

<telerik:RadGrid ID="rgTest" runat="server" > 
    <MasterTableView> 
     <Columns> 
      <telerik:GridClientSelectColumn UniqueName="ClientSelectColumn" /> 
      <telerik:GridBoundColumn DataField="guid" /> 
     </Columns> 
    </MasterTableView> 
     <ClientSettings EnableRowHoverStyle="true"> 
     <ClientEvents OnRowSelected="RowSelectionChanged" /> 
     <Selecting AllowRowSelect="true" /> 
    </ClientSettings> 
</telerik:RadGrid> 

risposta

6

Funzione get_selectedItems() dovrebbe essere invocato NON sull'oggetto RadGrid ma su un oggetto MasterTableView.

Questo codice funziona per me:

<telerik:RadCodeBlock runat="server" ID="RadCodeBlock1"> 
    <script type="text/javascript"> 

     function RowSelectionChanged(sender, eventArgs) { 
      if (sender != null) { 
       var masterTable = sender.get_masterTableView(); 
       for (i = 0; i < masterTable.get_selectedItems().length; i++) { 
        var it = masterTable.get_selectedItems()[i];  
        var element =it.get_element(); 
       } 
      } 
     } 

    </script> 
</telerik:RadCodeBlock>