如何给GridView添加RadioButton按钮(如何给GridView添加单选按钮)

首先: 问题点是建立在我使用ASP.NET控件不能单选的基础上!

因为朋友刚好遇到这个问题,并且之前我一直使用的是多选框,然后让选中的时候把其他全部取消选中就好了!

然后各种搜索说的不是很全,就发表一篇日志,送给有需求的新手,高手勿看,小心你的心脏!

想法是这样的: 因为使用的是ASP.NET的GridView,但是ASP.NET的服务器ID在浏览器上会被修改,这也可能是ASP.NET 单选按钮控件写在GridView里面有成了多选的原因吧!

以下为两个图片对比VS2010源码

</pre><pre name="code" class="csharp"><pre name="code" class="csharp"><asp:TemplateField>
                    <ItemTemplate>
                        <input id="Radio1" class="Radio" type="radio" name="aa" value='<%#Eval("AddressName") %>' οnclick="login()" />
                        <asp:RadioButton ID="RadioButton1" runat="server" />
                        <%#Eval("AddressName") %>
                    </ItemTemplate>
                </asp:TemplateField>

 

IE浏览器中的ID,Name被修改

从上边我们可以看到,name已经被修改了,所以我们应该选择HTML控件,因为单选按钮GroupName需要非常一致,所以我们选择HTML控件

</tr><tr>
			<td>6</td><td>黄村站</td><td>1</td><td>
                        <input id="GridView1_qiu_3" type="checkbox" name="GridView1$ctl05$qiu" />
                    </td><td>
                        <input id="Radio1" class="Radio" type="radio" name="aa" value='黄村站' οnclick="login()" />
                        <input id="GridView1_RadioButton1_3" type="radio" name="GridView1$ctl05$RadioButton1" value="RadioButton1" />
                        黄村站
                    </td>
		</tr><tr>

 

以下为代码部分:

以下是JS代码,因为使用HiddenField 控件,能直接在后台取值,所以我们使用JS给这个HiddenField 控件的value赋值

<pre name="code" class="csharp"><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <script type="text/javascript" language="javascript">
        function login() {
        //aa 是我的单选按钮的name  
            var portals = document.getElementsByName("aa");
            for (var i = 0; i < portals.length; i++) {
                if (portals[i].checked) {

                    //HiddenField2 是我的隐藏控件,用来在后台事件里面的值
                    document.getElementById("HiddenField2").value = portals[i].value
                    alert(document.getElementById("HiddenField2").value);
                }
            }
        }
        
     
       
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:HiddenField ID="HiddenField2" runat="server" />
    <button value="sada" οnclick="login()">
        sdfff
    </button>
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id"
            DataSourceID="SqlDataSource1" OnRowCreated="GridView1_RowCreated">
            <Columns>
                <asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" ReadOnly="True"
                    SortExpression="Id" />
                <asp:BoundField DataField="AddressName" HeaderText="AddressName" SortExpression="AddressName" />
                <asp:BoundField DataField="Isvalid" HeaderText="Isvalid" SortExpression="Isvalid" />
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:CheckBox runat="server" ID="qiu" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <input id="Radio1" class="Radio" type="radio" name="aa" value='<%#Eval("AddressName") %>' οnclick="login()" />
                        <asp:RadioButton ID="RadioButton1" runat="server" />
                        <%#Eval("AddressName") %>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        <br />
        <asp:HiddenField ID="HiddenField1" runat="server" />
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:BUS_BOOKINGConnectionString %>"
            SelectCommand="SELECT * FROM [M_Address_Master]"></asp:SqlDataSource>
    </div>
    </form>
</body>
</html>

 

后台代码: 

</pre><pre name="code" class="csharp">using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Button1.Text = this.HiddenField2.Value;
            //这些代码是无用的,是我之前考虑的错误思路
            foreach (GridViewRow item in this.GridView1.Rows)
            {
                if (((CheckBox)item.FindControl("qiu")).Checked == true)
                {

                }

                //我之前是使用<asp:Literalrunat="server"></asp:Literal>控件 给前台添加的HTML 单选控件,后台遍历不出来Radio控件,但如果你们有需求,可以考虑使用JS 去找这个控件试试
                foreach (Control c in item.Controls)
                {
                    if (c is HtmlInputRadioButton)
                    {
                        HtmlInputRadioButton cb = c as HtmlInputRadioButton;
                        if (cb.Checked == true)
                        {
                            this.Button1.Text = "aaa";
                        }
                    }
                }

            }
        }
        protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
        {
        }

        protected void Unnamed1_CheckedChanged(object sender, EventArgs e)
        {

        }
    }
}

 

O(∩_∩)O哈哈~


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值