主题:从单独的C#修改ASP.NET Web窗体中的控件属性

rbl8hiat  于 12个月前  发布在  .NET
关注(0)|答案(1)|浏览(90)

主题:从单独的C#类修改ASP.NET Web窗体中的控件属性
正文:
大家好,
我正在使用C#进行ASP.NET Web窗体项目。我有一个场景,我需要修改控件的属性,但我想从一个单独的C#类文件,而不是直接在与页面相关联的ASPX.CS文件中进行修改。
有没有人可以指导我如何做到这一点?我想了解如何从不同的C#类访问和修改控件属性,并将这些更改反映在UI中。
提前感谢您的帮助!
1.标签1不可接受

x33g5p2x

x33g5p2x1#

请记住,每个Web表单实际上只是一个.NET类。所以,在很多方面,你问这个问题:
如何使用类外部的代码修改类中的值?
就像你写的任何代码一样,你需要从第一个类示例调用外部代码。或者让第二个类抓取并获取第一个类的示例,然后再一次,代码可以自由地修改给定网页类上的控件设置。
由于页面和控件是标准的.NET类,因此执行此任务的方式与使用外部代码修改任何类中的值的方式相同。这种方法并不局限于web表单,而是你如何修改任何类的值和属性。
通常,我发现使用C#库代码(静态类代码)工作得相当好,因为通常这样的代码实际上并没有从非静态中受益。
两种方法都很好。
因此,这些代码可以自由修改值,包括给定网页上的控件及其设置和属性。
所以,假设我们有一个带有DropDownList控件的Web表单。
但是,随着时间的推移,反复键入相同的代码来修改该列表的属性并为该列表提供数据变得相当重复。
示例标签标记:

<asp:DropDownList ID="cboHotels" runat="server">
        </asp:DropDownList>

因此,现在有了静态类中的外部代码,我们可以修改该对象的属性。
这很好用:

public static void LoadCbo(DropDownList cbo,
                               string strSQL,
                               string sDataField,
                               string sValueField)
    {
        DataTable dt = new DataTable();
        using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.TEST4))
        {
            using (SqlCommand cmdSQL = new SqlCommand(strSQL, conn))
            {
                conn.Open();
                dt.Load(cmdSQL.ExecuteReader());
            }
        }
        cbo.DataTextField = sTextField; 
        cbo.DataValueField = sValueField;
        cbo.DataSource = dt;
        cbo.DataBind();
    }

所以,现在在页面加载事件中,我可以像这样修改下拉列表的控件设置和值:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            General.LoadCbo(cboHotels,
            "select ID, HotelName FROM tblHotelsA ORDER BY HotelName",
            "HotelName", "ID");
            
    }

因此,上面的外部类代码更改了组合框的属性(文本和值列),并根据提供的SQL设置了数据源。
因此,我在这里看不到任何阻止使用当前网页类之外的代码来修改此类值和控件的内容。
请记住,网页类的生存时间非常短,并且在页面生命周期结束时会很快超出范围。

相关问题