none
在GridView的模板列中加入RadioButton问题 RRS feed

  • 问题

  • 在GridView中有一个模板列
    我在其中放入一个RadioButton
    选择是出现了这样的情况

    怎么才能实现单选??

    2012年12月4日 9:01

答案

  • 不想用js或者jq  能不能解决?

    可以,但是要刷新页面的,除非你把整个GridView扔到UpdatePanel中,尝试这样做:

    [aspx]

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="CSharp.WebForm1" %>
     
    <!DOCTYPE html>
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script>
     
        </script>
    </head>
    <body>
        <form id="form1" runat="server" >
        <div>
       
        
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                        <Columns>
                            <asp:TemplateField HeaderText="Id">
                                <ItemTemplate>
                            <%#Container.DataItem %>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Choices">
                                <ItemTemplate>
                                    <asp:RadioButton ID="radioChoice" runat="server" AutoPostBack="true" OnCheckedChanged="radioChoice_CheckedChanged" Text='<%#Container.DataItem %>' />
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                    </asp:GridView>
                </ContentTemplate>
            </asp:UpdatePanel>
           </div>
      </form> </body> </html>

    [cs]

    public partial class WebForm1 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    GridView1.DataSource = new int[] { 1,2,3,4,5};
                    GridView1.DataBind();
                }
     
            }
     
            protected void radioChoice_CheckedChanged(object sender, EventArgs e)
            {
                foreach (GridViewRow item in GridView1.Rows)
                {
                    (item.FindControl("radioChoice"as RadioButton).Checked = false;
                }
                ((RadioButton)sender).Checked = true;
            }
        }

    我的博客园
    慈善点击,点击此处
    和谐拯救危机,全集下载,净化人心

    2012年12月5日 5:52

全部回复

  • 不想用js或者jq  能不能解决?
    2012年12月4日 9:02
  • 单选框有个 GroupName的属性,你设为一样就行了
    2012年12月4日 9:12
  • 加了  不灵的..
    2012年12月4日 9:28
  • 不想用js或者jq  能不能解决?

    可以,但是要刷新页面的,除非你把整个GridView扔到UpdatePanel中,尝试这样做:

    [aspx]

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="CSharp.WebForm1" %>
     
    <!DOCTYPE html>
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script>
     
        </script>
    </head>
    <body>
        <form id="form1" runat="server" >
        <div>
       
        
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                        <Columns>
                            <asp:TemplateField HeaderText="Id">
                                <ItemTemplate>
                            <%#Container.DataItem %>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Choices">
                                <ItemTemplate>
                                    <asp:RadioButton ID="radioChoice" runat="server" AutoPostBack="true" OnCheckedChanged="radioChoice_CheckedChanged" Text='<%#Container.DataItem %>' />
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                    </asp:GridView>
                </ContentTemplate>
            </asp:UpdatePanel>
           </div>
      </form> </body> </html>

    [cs]

    public partial class WebForm1 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    GridView1.DataSource = new int[] { 1,2,3,4,5};
                    GridView1.DataBind();
                }
     
            }
     
            protected void radioChoice_CheckedChanged(object sender, EventArgs e)
            {
                foreach (GridViewRow item in GridView1.Rows)
                {
                    (item.FindControl("radioChoice"as RadioButton).Checked = false;
                }
                ((RadioButton)sender).Checked = true;
            }
        }

    我的博客园
    慈善点击,点击此处
    和谐拯救危机,全集下载,净化人心

    2012年12月5日 5:52