【问题标题】:Getting value from dynamically added controls from ascx.file从 ascx.file 动态添加的控件中获取价值
【发布时间】:2014-12-09 07:45:13
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# asp.net .net ascx


    【解决方案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"
    

    【讨论】:

      猜你喜欢
      • 2016-10-02
      • 2011-04-13
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      • 2015-02-13
      • 1970-01-01
      相关资源
      最近更新 更多