【问题标题】:How to loop through gridview client side?如何循环通过gridview客户端?
【发布时间】:2012-05-15 23:09:48
【问题描述】:

我有一个像这样的网格视图:

<telerik:RadGrid ID="RadGrid1" runat="server" GridLines="None" AllowPaging="true"
        PageSize="20" OnPreRender="RadGrid1_PreRender" Width="500px">
        <PagerStyle Mode="NextPrevAndNumeric" />
        <MasterTableView TableLayout="Fixed" Width="500px">
            <ItemTemplate>
                <%# (((GridItem)Container).ItemIndex != 0)? "</td></tr></table>" : "" %>
                <asp:Panel ID="ItemContainer" CssClass='<%# (((GridItem)Container).ItemType == GridItemType.Item)? "item" : "alternatingItem" %>'
                    runat="server">
                    <asp:Image ID="image_event" runat="server" ImageUrl='<%# Eval("event_pic")%>' AlternateText="" />
                    <asp:RadioButton ID="rbtn_map" runat="server" onclientclick="adjustSelected(this)" />
                </asp:Panel>
            </ItemTemplate>
        </MasterTableView>
        <GroupingSettings CaseSensitive="false" />
    </telerik:RadGrid>

我想通过客户端方法adjustSelected(this) 循环遍历所有单选按钮,使它们未选中并将单击的单选按钮设置为仅选中。

【问题讨论】:

    标签: javascript asp.net jquery telerik


    【解决方案1】:

    给网格中的所有单选按钮一个类 (class="radioClass"):

    <asp:RadioButton CssClass="radioClass" runat="server" onclientclick="adjustSelected(this)" />
    

    然后使用该类选择所有其他收音机:

    function adjustSelected(obj){
        $('.radioClass').prop('checked', false);
        this.checked = true;
    }
    

    您也可以使用不显眼的 JavaScript:

    var $radios = $('.radioClass');
    $('.radioClass').click(function(){
        $radios.prop('checked', false);
        this.checked = true;
    });
    

    更新:

    好的。 ASP.Net 生成奇怪的标记,所以使用这个作为函数:

    function adjustSelected(obj){
        console.log($('.radioClass :radio'));
        $('.radioClass :radio').prop('checked', false);
        $(':radio', obj).prop('checked', true);
    }​
    

    【讨论】:

    • @just_name。你有没有像我一样给所有的收音机上一堂课……我猜不是。 class="radioClass"
    • @just_name。这没有意义,还有其他事情发生。你能告诉我渲染的网格,有两行吗?
    • @just_name。可能是因为你在ASP.net中需要写cssClass而不是class,但是我很久没用了...
    • @just_name。用完整的代码创建一个小提琴。这就像我第十次回答你的问题......让我看看你真正得到了什么,然后我们会看到。
    • @just_name 和 gdoron - 现在可以删除这些 cmets 吗?
    【解决方案2】:
     function checkRadio{
        var grid = document.getElementById('<%=RadGrid1.ClientID%>');
        if (grid) {
            var elements = grid.getElementsByTagName('input');
            var checkcount = 0;
            for (var i = 0; i < elements.length; i++) {
                if (elements[i].type == 'radio' && elements[i].id.toString().match('rbtn_map') != null) {
                   --- do code here ---                    
                }
            }
    
        }
     }
    

    【讨论】:

    • 他正在使用 jQuery,它可以非常漂亮和干净...... :)
    猜你喜欢
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    相关资源
    最近更新 更多