从ascx.file中动态添加控件获取值

时间:2014-10-14 13:29:15

标签: c# asp.net .net ascx

我有一个关于从下拉列表和文本框中捕获我的值并将它们保存到我的数据库的问题。

我正在使用ASP.NET aspx页面,而不是MVC。

我有一个带有控件的ascx文件。我在我的代码中动态创建它们。我没有回发的问题,我使用ViewState作为我的控件的计数器。每个控件都有一个ID为“ratingcontrols”+ viewState计数器。所以,例如我有6个下拉列表和4个文本框,计数器从0到8.第一个下拉列表的ID是“ratingcontrols0”,第二个是“ratingcontrols1”,依此类推。我的前3个下拉列表实际上是分开的日,月和年,它代表我的日历。接下来的3个下拉列表是我的第二个日历。

当我单击按钮添加控件时,这些10个控件将作为一个组从我的ascx文件创建。 当我第二次单击按钮时,我有另一组10个控件,刚才我的计数器从9到17为我的ID。

我的问题是,如何获取这些值,并将每个组添加到我的数据库以及如何将每组3个下拉列表连接到具有所选值的日期?

1 个答案:

答案 0 :(得分:1)

以下代码对我有用:

public Control FindControlRecursivelyByID(Control controlToSearch, string controlToFind)
{
    Control rtnCtrl = null;
    foreach (Control ctrl in controlToSearch.Controls) {
        if (ctrl != null && ctrl.ID == controlToFind) {
            rtnCtrl = ctrl;
        } else {
            if (ctrl.HasControls & rtnCtrl == null) {
                rtnCtrl = FindControlRecursivelyByID(ctrl, controlToFind);
            }
        }
    }
    return rtnCtrl;
}

调用此方法时,您还必须进行直播:

((TextBox)FindControlRecursivelyByID(this.Page, "controlID")).Text == "SomeText"