本帖最后由 manceelee 于 2011-01-06 04:37:25 编辑

解决方案 »

  1.   

    定义一个接口。例如
    interface ISave
    {
       void Save();
    }
    所有控件实现这个接口,在Save中保存数据岛数据库。
    这样在页面中保存这个接口的变量ISave myControl = 动态创建control。在button的click中就可以
    myControl.Save();
      

  2.   

    既然每一次只加载一个Control.
    那么你就可以给他命固定的名字或者装在DIV里
    通过DIV来查找.
      

  3.   

    谢谢楼上两个..
    你们方法我都考虑过了. 
    很正确的方向.请问二楼朋友类似的例子么. 三楼的.我本来打算在每个control里加一个隐藏的按钮.然后外部在去找这个隐藏的按钮. 谢谢:)
      

  4.   

    Control c = Page.LoadControl("~/manage/webcontrols/PopCalendar.ascx");
                                ((Solution.Manage.WebControls.PopCalendar)c).ID = controlid;Controls.Add(c);保存的时候在Controls中查找下
      

  5.   

    因为每个加载的控件名字我们是不知道的.
    ...你都不知道加的那个?程序不是你写的?这都不清楚 还搞啥啊。
    真不知道是编程序 还是
    哎 不说废话了 编成你这样也不容易,
    推荐你一个方法
    建个 usercontrol 基类 里面有个 可重写更新方法你那些不知道的控件 继承 这个基类 重写更新方法。页面 加载子类 强转成基类 使用基类的更新方法 就成了。
      

  6.   

      protected void Page_Load(object sender, EventArgs e)        {            if (!Page.IsPostBack)            {                DataTable dt = new DataTable();                AddControls();                            }        }         protected override void LoadViewState(object savedState)        {            base.LoadViewState(savedState);            if (ViewState["controsladded"] == null)                AddControls();        }         private void AddControls()        {            TextBox dynamictextbox = new TextBox();            dynamictextbox.Text = "(Enter some text)";            dynamictextbox.ID = "dynamictextbox";            Panel1.Controls.Add(dynamictextbox);            ViewState["controlsadded"] = true;        }          protected void Button2_Click(object sender, EventArgs e)        {            TextBox tb = new TextBox();            tb = (TextBox)(Panel1.FindControl("dynamictextbox"));            Label1.Text = tb.Text;         }
    留给以后需要的朋友.