前台有代码:                        <td>
                            <asp:RadioButtonList ID="Select_3" runat="server">
                                <asp:ListItem Selected="true" Value="0">不符合</asp:ListItem>
                                <asp:ListItem Value="1">符合</asp:ListItem>
                            </asp:RadioButtonList>
                        </td>因为有ID = Select_1至Select-52,我就使用下面的代码:        string strRet = "".ToString();
        string subSelect = "Select_";
        for (int i = 1; i <= 52; i++)
        {
            subSelect = subSelect + i.ToString();
            Control ctl = this.FindControl(subSelect);
            RadioButtonList rbl = (RadioButtonList)ctl;
            if (rbl != null)
            {
                strRet = strRet + rbl.SelectedValue + "-";
            }
        }        strRet = strRet.Substring(0, strRet.Length - 1);
        return strRet;
但是findControl查找到的一直是null。我应该怎么做?

解决方案 »

  1.   

    因为你外面还有容器.你把这52个select用panel包起来.然后panel1.findcontrol 就行了
      

  2.   

    我是使用HTML元素的容器,这个也有这个影响啊?那有影响的容器有哪些呢?
      

  3.   

    不应该是this
    应该是 容器控件.findcontrol
    还有 findcontrol,我忘记是不是会帮你模糊查询 Select_了。这个记不清了。
      

  4.   

    Control ctl = this.FindControl(subSelect);
    应该改为Control ctl = Select_3.FindControl(subSelect);
    这样可以找到与 Select_3 在同一个控件树名称空间内的其它 1~52 控件。
      

  5.   

    不用考虑“容器”,你就从 Select_3 执行 FindControl 就可以。先学一点 asp.net 原理。https://bbs.csdn.net/topics/290053134