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

问题描述 投票:0回答:1

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

身体:

大家好

我正在使用 C# 开发 ASP.NET Web 窗体项目。我有一个场景,我需要修改控件的属性,但我想从单独的 C# 类文件中执行此操作,而不是直接在与页面关联的 ASPX.CS 文件中执行此操作。

有人可以指导我如何实现这一目标吗?我想了解如何从不同的 C# 类访问和修改控件属性,并将这些更改反映在 UI 中。

预先感谢您的协助!

网络表格 1. 标签 1 不可访问 DEBIDO A SU NIVEL DE PROTECCION

c# asp.net visual-studio webforms
1个回答
0
投票

请记住,每个 Web 表单实际上只是一个 .NET 类。所以,你在很多方面问这个问题:

如何使用类外部的代码修改该类中的值?

好吧,就像您编写的任何代码一样,您需要从第一类实例调用外部代码。或者让第二类抓取并获取第一类的实例,然后该代码再次可以自由修改给定网页类上的控件设置。

由于页面和控件是标准的 .net 类,因此处理此任务的方式与使用外部代码修改任何类中的值的方式相同。这种方法不仅限于 Web 表单,还包括如何修改任何类的值和属性。

我经常发现使用 C# 库代码(静态类代码)效果相当好,因为通常此类代码实际上并不能从非静态中受益。

任何一种方法都可以。

因此,此类代码可以自由修改值,其中包括给定网页上的控件及其设置和属性。

所以,假设我们有一个带有下拉列表的网络表单。

但是,随着时间的推移,一遍又一遍地键入相同的代码来修改该下拉列表的属性并为该下拉列表提供数据会变得相当重复。

下拉标记示例:

        <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 = sDataField; 
        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 设置数据源。

我在这里看到的任何内容都不会阻止使用当前网页类之外的代码来修改该类中的此类值和控件。

请记住,网页类的生存时间很短,并且在页面生命周期结束时很快就会超出范围。

© www.soinside.com 2019 - 2024. All rights reserved.