2

我正在动态创建一个填充有 devex 单选列表控件的 HTML 表格并将其添加到页面中。

//Create the radio list
ASPxRadioButtonList radButt = new ASPxRadioButtonList();
radButt.ID = "audit-" + audType;

tableCell2.Controls.Add(radButt);
tableRow.Cells.Add(tableCell2);
auditTable.Rows.Add(tableRow);

这一切都很好。
现在,在回调中,我想获取那个收音机列表并获取它的设置......所以我正在尝试这个,但一直为 NULL。

ASPxRadioButtonList audRad = (ASPxRadioButtonList)Page.FindControl("audit-" + audType);

我在这里缺少什么?

4

2 回答 2

2

根据 Maarten 的回答,这是直接从我们大师的博客中挑选的递归 FindControl 解决方案:

private Control FindControlRecursive(Control root, string id) 
{ 
    if (root.ID == id)
    { 
        return root; 
    } 

    foreach (Control c in root.Controls) 
    { 
        Control t = FindControlRecursive(c, id); 
        if (t != null) 
        { 
            return t; 
        } 
    } 

    return null; 
} 
于 2013-01-17T18:03:48.130 回答
2

问题是Page.FindControl方法不会搜索页面上的所有控件。它只搜索顶层控件。您必须使用Page.FindControlControl.FindControl搜索页面上的所有控件,可能是递归的。

还有一点,你的意思是在回发中找到单选按钮,还是在同一个请求中?如果您的意思是在回发中,那么您还必须在回发中重新生成控件,就像 Aniket 提到的那样。

于 2013-01-17T17:31:55.710 回答