【问题标题】:asp net repeater radio button group name and get radio button valueasp net repeater 单选按钮组名并获取单选按钮值
【发布时间】:2013-09-04 02:55:03
【问题描述】:

我在一个页面中有一个用于银行帐号和信用卡分期付款列表的 aspx c# 页面

如果用户想通过银行转账选择银行账户,否则如果用户想支付信用卡分期付款,就选择银行账户。

问题是单选按钮组名称。我没有对单选按钮进行分组,也没有获得选定的单选按钮值。

这是我的代码。

这是银行账户列表

<asp:Repeater ID="RptBankalar" runat="server">
                        <ItemTemplate>
                            <div class="BankaListBox">
                                <table width="100%" height="100" border="0" cellspacing="0" cellpadding="0">
                                    <tr>
                                        <td width="200" align="center" valign="middle">
                                            <img alt="<%#Eval("BankName").ToString() %>" src="../../Files/<%#Eval("Logo").ToString() %>" /></td>
                                        <td>
                                            <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                                <tr>
                                                    <td width="120" height="22"><strong>Account Owner</strong></td>
                                                    <td width="15"><strong>:</strong></td>
                                                    <td><%#Eval("AcOwner").ToString() %></td>
                                                </tr>
                                                <tr>
                                                    <td width="120" height="22"><strong>Branch No</strong></td>
                                                    <td width="15"><strong>:</strong></td>
                                                    <td><%#Eval("Branch").ToString() %></td>
                                                </tr>
                                                <tr>
                                                    <td width="120" height="22"><strong>Account Number</strong></td>
                                                    <td width="15"><strong>:</strong></td>
                                                    <td><%#Eval("AccountNum").ToString() %></td>
                                                </tr>
                                                <tr>
                                                    <td width="120" height="22"><strong>IBAN</strong></td>
                                                    <td width="15"><strong>:</strong></td>
                                                    <td><%#Eval("Iban").ToString() %></td>
                                                </tr>
                                            </table>
                                        </td>
                                        <td width="100" align="center" valign="middle">
                                            <asp:RadioButton ID="RadioBtn" Text='<%#Eval("id").ToString() %>' runat="server" />
                                        </td>
                                    </tr>
                                </table>
                            </div>
                        </ItemTemplate>
                    </asp:Repeater>

同页信用卡分期清单

<asp:Repeater ID="RptTaksitList" OnItemDataBound="RptTaksitList_ItemDataBound" runat="server">
                                            <ItemTemplate>
                                                <tr runat="server" id="arka_tr">
                                                    <td align="center" height="22" width="40" runat="server" id="td1">
                                                        <b style="display: none; visibility: hidden">
                                                            <asp:Literal ID="lt_id" Text='<%#Eval("BankaID").ToString() %>' runat="server"></asp:Literal>
                                                        </b>
                                                        <asp:Literal ID="lt_taksit_sayisi" Text='<%#Eval("TaksitSayisi").ToString() %>' runat="server"></asp:Literal></td>
                                                    <td width="150" runat="server" id="td2">
                                                        <asp:Literal ID="LblSepetTotal" runat="server" Text='<%#Session["SepetUrunToplami"] %>'></asp:Literal></td>
                                                    <td runat="server" id="td3"><b style="display: none; visibility: hidden">
                                                        <asp:Literal ID="lt_komisyon_orani" Text='<%#Eval("KomisyonOrani").ToString() %>' runat="server"></asp:Literal>
                                                    </b>
                                                        <asp:Literal ID="lt_toplam_tutar" runat="server" Text=''></asp:Literal>
                                                        <b style="display: none; visibility: hidden">
                                                            <asp:Literal ID="lt_alt_limit" Text='<%#Eval("AltLimit").ToString() %>' runat="server"></asp:Literal>
                                                        </b>
                                                    </td>
                                                </tr>
                                            </ItemTemplate>
                                        </asp:Repeater>

我怎样才能得到值和分组这个单选按钮。

我通常使用经典的 asp,但我改变了我的编码语言。

问候。

感谢您的帮助。

【问题讨论】:

  • 您可以使用 jquery 对中继器中的单选按钮进行分组。

标签: c# asp.net .net sql radio-button


【解决方案1】:

我从不在 Stack 中提供帮助。所以在得到社区这么多的帮助后,我第一次做出贡献。

我喜欢你。我有一个更简单的解决方案。

在您的单选按钮周围放置一些元素 (DIV),并使用您可能希望在 jQuery 中选择所有单选的 className。

编辑:当我改变这种方式时,aspnet 并没有保持视图状态。现在它工作得很好:)

$(document).ready(function () {
    $(".radiofix").each(function () {
        var objRadiosContainer = $(this);
        objRadiosContainer.find("input[type=radio]").each(function () {
            var objRadio = $(this);
            objRadio.change(function () {
                if(objRadio.get(0).checked)
                {
                    objRadiosContainer.find("input[type=radio]").each(function () {
                        if($(this).get(0).id != objRadio.get(0).id)
                        {
                            $(this).get(0).checked = false;
                        }
                    });
                }
            });
        });
    });
});

让我们看一下 HTML 文件(或 ASPX 文件):

<asp:Repeater ID="questions" runat="server">
        <ItemTemplate>
            <h3>%# getQuestionNumber() %>) <%# Eval("questionDescription").ToString() %></h3>
            <div class="nameOfTheClass">
                <asp:Repeater ID="answers" runat="server">
                    <ItemTemplate>
                        <asp:RadioButton ID="radioId" runat="server" />
                    </ItemTemplate>
                </asp:Repeater>
            </div>
        </ItemTemplate>

这你会工作得很好。只需创建一些 javascript 文件 (.js) 并调用它,修复 TheRadios.js 并为“nameOfTheClass”选择一个您喜欢的名称。

重要提示:我没有在更新面板中测试代码。我建议你这样做。

【讨论】:

    【解决方案2】:

    我是这样做的。

    在标记中,我将单选按钮声明为服务器端 html 控件:

    <input id="rbMyRadio" type="radio"runat="server" class="myClass" />
    

    并在代码中访问值:

    foreach (RepeaterItem item in RptBankalar.Items)
    {
        if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
        {
            HtmlInputRadioButton rbMyRadio = (HtmlInputRadioButton)item.FindControl("rbMyRadio");
            if (rbMyRadio != null && rbMyRadio.Checked)
            {
                //Do tasks
            }
        }
    }
    

    在页眉中使用 jquery 进行分组:

    <script type="text/javascript">
        $(document).ready(function () {
            $('input[type=radio]').click(function () {
                var cname = $(this).attr('class');
    
                $('.' + cname).each(function () {
                    $(this).prop('checked', false);
                });
    
                $(this).prop('checked', true);
            });
        });
    </script>
    

    并在头部引用jquery:

    <script src="Scripts/jquery-1.8.2.js"></script>
    

    【讨论】:

    • 您是否像此示例一样更改了 asp 单选按钮标记,添加了 jquery?什么不工作?分组不起作用还是您无法获取单选按钮的值?
    【解决方案3】:

    答案很晚,但您也可以尝试在中继器中添加这样的单选按钮:

            <asp:TemplateColumn>
                <ItemTemplate>
                    <div style="text-align: center">
                        <input type="radio" id="rptMyRadio" runat="server" />
                    </div>
                </ItemTemplate>
            </asp:TemplateColumn>
    

    然后在一个脚本块中添加:

            $('input[type=radio]').click(function () {
                $('input[type=radio]').removeAttr("checked");
                $(this).prop('checked', true);
            });
    

    【讨论】:

    • 我认为这是有道理的。我尝试了这个简单的 Jquery 代码,它工作正常。
    猜你喜欢
    • 2017-02-06
    • 1970-01-01
    • 2020-07-14
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 2018-01-23
    相关资源
    最近更新 更多