【问题标题】:Dynamically add different user controls动态添加不同的用户控件
【发布时间】:2010-10-19 04:42:59
【问题描述】:

我正在开发一个网站,让教师可以报告课堂上学生的学业进步。我已经让网站设置了两个主要页面:一个带有显示课程的用户控件(基本课程信息的 GridView 与模板字段中的子 GridView 显示学生姓名和复选框以选择它们 - 称为 MiniStudents) ,另一个带有显示所选学生的用户控件 - 称为 FullStudents。

虽然不太可能,但一位教师可能会在两个不同的班级中拥有同一个学生。我已经在当前页面设置中考虑了这一点——学生 ID 和班级 ID 的组合(班级 ID 每个季度都会更改,对于那些认为这将是一个问题的人)在数据库中形成一个唯一键。最近,我的一位用户问我是否可以在页面上按班级打破记录,以便教师能够轻松识别他们在哪个班级进行操作。

所以,我的问题是:我是否可以在类用户控件的末尾动态添加一列,以便我将 MiniStudents 切换为 FullStudents?

如果我遗漏了任何重要细节,或者如果有人想要/需要代码,请告诉我。

【问题讨论】:

    标签: asp.net user-controls


    【解决方案1】:

    试试这个:

    //Under page_load
    string path;
    if(condition) path = "~/MiniStudents.ascx";
    else path = "~/FullStudents.ascx";
    Control userControl = this.LoadControl(path);
    panel1.Controls.Add(userControl);
    

    如果您想要在呈现用户控件之前设置特定属性,则让它们继承自定义用户控件类:

    public class CustomControl : UserControl
    
    public class MiniStudents : CustomControl
    public class FullStudents : CustomControl
    

    那么你可以这样做:

    CustomControl userControl = (CustomControl)this.LoadControl(path);
    userControl.UserId = userId;
    

    我希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      您可以同时添加两者,并隐藏其中一个。

      【讨论】:

        【解决方案3】:

        您可以使用多视图控件来控制哪个控件可见。虽然如果您同时加载所有这些控件,我会担心您的视图状态大小。听起来页面上可能有很多数据和标记。

        【讨论】:

          猜你喜欢
          • 2017-01-06
          • 1970-01-01
          • 2012-12-10
          • 1970-01-01
          • 2010-12-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多