2011-11-28 39 views
5

Tôi gặp sự cố với hàm get_selectedItems(). Tôi sử dụng RadGrid từ Telerik. Điều khiển tuyệt vời, nhưng bây giờ tôi tình cờ gặp một lỗi mà tôi không thể giải quyết được.get_selectedItems() [0] trên RadGrid trả về null

Khi chọn một hàng, tôi gọi hàm RowSelectionChanged ở phía máy khách và sau đó tôi sẽ nhận được ngoại lệ.

Bất cứ ai có thể cho tôi biết lý do tại sao sender.get_selectedItems()[0] là null trong khi sender.get_selectedItems().length ít nhất là 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> 

Trả lời

6

Chức năng get_selectedItems() nên được gọi NOT trên đối tượng RadGrid nhưng đối tượng MasterTableView.

Mã này hoạt động cho tôi:

<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>