在GridView中,一个单元格内有3个RadioButton(在同一组Group)当我点击GridView外面一个button的时候想判断这个单元格内哪个RadioButton是选中状态以下是我的代码
        foreach (GridViewRow row in GridViewDemo.Rows)
        {
            if (row.RowType == DataControlRowType.DataRow)
            {
                foreach(Control obj in row.Controls) 
                {
                    if (obj.GetType().BaseType.Name.ToUpper().Contains("RADIOBUTTON"))
                    { 
                    }
                }
            }
        }
在最后一个if中却怎么都找不到任意一个RadioButton.请指教什么地方不对了,谢谢.

解决方案 »

  1.   

    用RadioButtonList,然后再遍历看哪个选了
    要不就得Findcontrol三次了
      

  2.   

    if(objinrow is RadioButton)
    {
        //todo
    }
      

  3.   

    看官们,我的意思是在最后一个if中却怎么都找不到任意一个RadioButton噢。                foreach(Control obj in row.Controls) 
                    {
                        if (obj.GetType().BaseType.Name.ToUpper().Contains("RADIOBUTTON"))
                        { 
                        }
                    }每次这个obj.GetType().ToString()都是输出
    "System.Web.UI.WebControls.DataControlFieldCell"
    而不是期望的
    System.Web.UI.WebControls.RadioButton
      

  4.   

    foreach (GridViewRow row in GridViewDemo.Rows)
            {
                  radiobuttonlist rbl= row.findcontrol("radiobuttonlist1") as radiobuttonlist;
                    if(rbl!=null)
                   for(int i=0;i<rbl.items.count;i++)
                   {
                         if(rbl.items.selected)
                         {//剩下的你肯定知道怎么写了}
                   }
            }
      

  5.   

    看下这个
    Rows 属性(集合)用来存储 GridView 控件中的数据行
    Rows.Controls 这个集合中应该是什么呢,想一想吧。
    你也说了打印出的是"System.Web.UI.WebControls.DataControlFieldCell"代码修改为如下 foreach (GridViewRow row in GridViewDemo.Rows)
            {
                if (row.RowType == DataControlRowType.DataRow)
                {
                    RadioButton rb = row.FindControl("控件名称1");
                    RadioButton rb = row.FindControl("控件名称2");
                    RadioButton rb = row.FindControl("控件名称3");
                    //得到三个单选按钮后就可以判断了
                    //判断代码略...
                }
            }注意:代码没有在编译器执行,请自行验证修改
      

  6.   

    6楼java_renyusheng的代码我能理解,我的RadioButton控件都是自动生成的哦,每个RadioButton控件的名字都不一样所以帖子的标题才是 根据控件类型找出它对应的ID以及VALUE
      

  7.   

    5 楼 yeness 的回复 row.findcontrol("radiobuttonlist1")辛苦大家了,根据控件类型找出它对应的ID以及VALUE噢.不是根据名称找控件的.
      

  8.   

    按照lz的意思作了一个,看看是不是这样,我试了可以显示出被选按钮的ID<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
            <Columns>
                    <asp:TemplateField HeaderText="Select" ShowHeader="False">
                        <ItemTemplate>
                            <asp:RadioButton ID="RadioButton1" runat="server" Text="RadioButton1" GroupName="RadioGroup" />
                            <asp:RadioButton ID="RadioButton2" runat="server" Text="RadioButton2" GroupName="RadioGroup" />
                            <asp:RadioButton ID="RadioButton3" runat="server" Text="RadioButton3" GroupName="RadioGroup" />
                        </ItemTemplate>
                    </asp:TemplateField>   
                    <asp:BoundField DataField="insertTime" HeaderText="Time" />                             
                </Columns> 
            </asp:GridView>
            <br />
            <asp:Button ID="Button2" runat="server" Text="Button" OnClick="Button2_Click" />
    protected void Button2_Click(object sender, EventArgs e)
        {
            foreach (GridViewRow row in GridView1.Rows)
            {
                if (row.RowType == DataControlRowType.DataRow)
                {
                    foreach (Control obj in row.Cells[0].Controls) //Cell[0]标明是GridView的第一列
                    {
                        if (obj is RadioButton)
                        {
                            if((obj as RadioButton).Checked)
                                Response.Write(obj.ID);
                        }
                    }
                }
            }    }
      

  9.   

    lz只要按照实际的列把Cells得下标换了就行了
      

  10.   

    Jack_xiao 
    一语惊醒梦中人!(因为我的GridView Demo只有一个单元格数据,里面有3个radiobutton),图快,方才光记得在row中找,忘记定位cells了,真是粗心..经过Debugrow.Cells[0]
    {System.Web.UI.WebControls.DataControlFieldCell}row.Cells[1]
    {System.Web.UI.WebControls.DataControlFieldCell}row.Cells[1].Controls
    {System.Web.UI.ControlCollection}
        Count: 3//看到这里我就有了一丝惊喜row.Cells[1].Controls[1]
    {Text = "金融、保险、证券、投资" Checked = false}
        [System.Web.UI.WebControls.RadioButton]: {Text = "金融、保险、证券、投资" Checked = false}
    Jack_xiao 你是对的,同时也感谢关注此问题的朋友!