在客户端循环RadGrid项目

时间:2014-05-13 00:38:54

标签: javascript asp.net telerik radgrid

  • 有一个radgrid,其中一列是复选框 ItemTemplate中。

    我想循环浏览这个radgrid的项目。并根据每个项目的checkbox.checked条件,启用单独的按钮控件。(在客户端使用javascript)

  • 我为此设置了代码,但它没有提供所需的输出。 请问有什么不对。

使用Javascript:

<telerik:RadScriptBlock ID="scriptBlock1" runat="server">
<script type="text/javascript">
function checkRestrictionAcceptance() 
    {
        var masterTable = $find("<%=RGGroupedCartRestrictedAssets.ClientID%>").get_masterTableView();        
        var count = masterTable.get_dataItems().length;
        var checkbox;
        var item;
        for (var i = 0; i < count; i++) 
        {
            item = masterTable.get_dataItems()[i];
            checkbox = item.findElement("AcceptedCheckbox");
            alert(checkbox.checked);
            if (checkbox.checked) 
            {
                var DownloadButton = document.getElementById('DownloadButton');
                DownloadButton.enabled = false;
            }
        }
    }
 </script>
</telerik:RadScriptBlock>

.aspx的:

<telerik:RadGrid ID="RGGroupedCartRestrictedAssets" runat="server" DataSourceID="CslaDSGroupedCartRestrictedAssets" AutoGenerateColumns="False"
                    GridLines="None"  AllowPaging="True" AllowSorting="True" AllowFilteringByColumn="True" EnableEmbeddedSkins="false">

                    <MasterTableView  DataSourceID="CslaDSGroupedCartRestrictedAssets" DataKeyNames="RestrictionText">

                        <Columns>                                
                            <telerik:GridTemplateColumn>                                
                                <ItemTemplate>
                                    <asp:Checkbox ID="AcceptedCheckbox"  runat="server" />
                                </ItemTemplate>
                        </Columns>
                    </MasterTableView>
                </telerik:RadGrid>

<asp:Button ID="DownloadButton" runat="server" Text = "Test"  OnClientClick ="checkRestrictionAcceptance();"/>

2 个答案:

答案 0 :(得分:0)

您需要指定DownloadButton

的clientID
 var DownloadButton = document.getElementById('<%=DownloadButton.ClientID%>');

答案 1 :(得分:0)

我不确定您正在使用哪种浏览器,但我认为直接在get_dataItems()中使用'i'可能会导致Firefox出现问题。您使用Telerik.Web.UI 2013.3.1324.45在IE10中为我的代码工作正常 - 我得到了checkbox.checked的值。不过试试这个,它可能会有所帮助:

       function checkRestrictionAcceptance() {
        var masterTable = $find("<%=RGGroupedCartRestrictedAssets.ClientID%>").get_masterTableView();
        var count = masterTable.get_dataItems().length;
        var checkbox;
        var items = masterTable.get_dataItems();
        for (var i = 0; i < count; i++) {
            checkbox = items[i].findElement("AcceptedCheckbox");
            alert(checkbox.checked);
            if (checkbox.checked) {
                var downloadButton = document.getElementById('<%=DownloadButton.ClientID%>');
                downloadButton.enabled = false;
            }
    }