2012-12-14 59 views
1

我從下面的鏈接複製的代碼 Check all CheckBoxes in Telerik nested Grid in C#入住Telerik的所有CheckBox radgrid控件

如何以往當我運行代碼,我得到這個錯誤:

0x800a01b6 - Microsoft JScript runtime error: Object doesn't support this property or method

'checkAll(this, gridToCheckAll);'中突出帶錯誤的動態運行代碼。

任何幫助,將不勝感激。

<script> 
var gridToCheckAll = '<%= rgFiles.ClientID %>'; 

    function checkAll(sender, containerID) { 
     var checked = sender.checked; 
     var container = document.getElementById(containerID); 
     var checkboxes = container.getElementsByTagName('input'); 
     for (var i = 0, l = checkboxes.length; i < l; i++) { 
      if (checkboxes[i] != sender && !checkboxes[i].disabled) 
       checkboxes[i].checked = checked; 
     } 
    } 
</script> 

<telerik:RadGrid id="rgFiles" runat="server" HorizontalAlign="NotSet" BackColor="darkgray" 
    AllowPaging="True" PageSize="50" AllowSorting="True" 
    EnableEmbeddedScripts="true" 
    OnNeedDataSource="rgFiles_NeedDataSource" 
    OnItemCommand="rgFiles_ItemCommand" 
    OnItemDataBound="rgFiles_ItemDataBound" 
    OnItemEvent="rgFiles_ItemEvent" 
    AllowMultiRowSelection="true" Skin="" 
    AllowFilteringByColumn="true" EnableLinqExpressions="false" > 
    <MasterTableView HorizontalAlign="NotSet" AutoGenerateColumns="false" AllowSorting="True" 
     Font-Size="7pt" AllowCustomSorting="true" CellPadding="2" CellSpacing="1" BorderWidth="0px" 
     TableLayout="Fixed" AlternatingItemStyle-Wrap="false" ItemStyle-Wrap="false" 
     CommandItemStyle-Wrap="false" > 
     <FooterStyle CssClass="datagrid-footerstyle" HorizontalAlign="Right" /> 
     <ItemStyle CssClass="datagrid-itemstyle" Wrap="false" Font-Size="XX-Small" Height="15px"/> 
     <EditItemStyle BackColor="#2461BF" /> 
     <PagerStyle BackColor="#E0E0E0" ForeColor="DimGray" HorizontalAlign="Left" Mode="NextPrevAndNumeric" 
      NextPageText="next" PrevPageText="prev" AlwaysVisible="True" /> 
     <HeaderStyle CssClass="datagrid-headerstyle" ForeColor="White" /> 
     <FilterItemStyle BackColor="#a9a9a9" /> 
     <AlternatingItemStyle CssClass="datagrid-alternatingitemstyle" /> 
     <ExpandCollapseColumn Visible="False"> 
      <HeaderStyle Width="19px" /> 
     </ExpandCollapseColumn> 
     <RowIndicatorColumn Visible="False"> 
      <HeaderStyle Width="20px" /> 
     </RowIndicatorColumn> 
     <Columns> 
      <telerik:GridTemplateColumn SortExpression="Reviewed" DataField="Reviewed" HeaderText="<input type='checkbox' id='checkAll' onclick='checkAll(this, gridToCheckAll);'>" 
       UniqueName="Reviewed" AllowFiltering="false" > 
       <ItemTemplate> 
        <asp:CheckBox ID="cbReviewed" runat="server" OnCheckedChanged="cbReviewed_CheckedChanged" /> 
       </ItemTemplate> 
       <ItemStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Top"></ItemStyle> 
       <HeaderStyle Width="50px"></HeaderStyle> 
      </telerik:GridTemplateColumn> 

回答

4

也許你應該使用Telerik的:在你的地方的TemplateColumn中GridClientSelectColumn,Telerik的已經內置在你正在尋找的功能。

API:http://www.telerik.com/help/aspnet-ajax/grid-column-types.html

<radgrid...> 
<masterTableView ... > 
    <columns> 
     <telerik:GridClientSelectColumn UniqueName="ClientSelectColumn"> 
      <HeaderStyle Width="35px" /> 
     </telerik:GridClientSelectColumn> 
    </columns> 
</MasterTableView> 
<ClientSettings> 
     <ClientEvents OnRowSelected="RowSelected" OnRowDeselected="RowDeselected"/> 
</ClientSettings> 
</radgrid> 


     function RowDeselected(sender, eventArgs){ 
      //your code 
     } 

     function RowSelected(sender,eventArgs) 
     { 
      var MasterTable = sender.get_masterTableView(); 
      var selectedRows = MasterTable.get_selectedItems(); 
      var selectedRowsCount = selectedRows.length; 
      //etc 
     } 
+0

我已經試過了。問題是我必須告訴用戶什麼時候選擇複選框並在那個時候用該框中的適當布爾值更新記錄,因爲用戶可以選擇將其標記爲已審閱或將其更改爲未審閱,我還使用選定的如果用戶選擇,則一次將文件壓縮到一起並流一次。所以這個盒子被用於多種不同的功能。 GridClientSelectColumn不允許檢測客戶端何時更改了我在任何地方找到的複選框。 –

+0

我相信你所描述的這一點仍然有效。您可以附加clientEvents OnRowSelected,OnRowDeselected以檢測用戶何時點擊或取消點擊該行。 –

+0

這幾乎工作,除了我需要它能夠調用服務器端代碼,在更新之前做一些處理。像授權進行更新的人,或者他們只能下載文件。像這樣的東西 –

0

我知道我來不及回答原來的問題。但仍想爲其他開發者提供我的反饋。

改變從checkAll()的Java腳本方法的名稱在兩地別的,你不會看到這個討厭的JS錯誤:)

相關問題