C#Winforms - 数据绑定或列表<t> </t>

时间:2013-04-19 11:11:28

标签: c# winforms list

我这里有一个名为PurchaseOrder的类中的方法。在这里,我使用List<string>检索供应商列表并在组合框中填充这些列表。代码实际上有效,但随着我在SQL Server数据库中添加越来越多的供应商,我在加载的表单上遇到了一些减速。我怎样才能优化这样的速度?

下面是两组代码,来自PurchaseOrderClass.cs的方法PopulateSuppliers()和一个Form_Load事件。

    public object PopulateSuppliers()
    {
        //Create an instance of a List of Strings.
        List<string> ListOfSuppliers = new List<string>();

        string sqlString = "SELECT CompanyName FROM tbl_suppliers WHERE Archived = 'False';";

        SqlConnection sqlConnection = new SqlConnection(connectionString);
        SqlCommand sqlCommand = new SqlCommand(sqlString, sqlConnection);

        sqlConnection.Open();
        sqlReader = sqlCommand.ExecuteReader();

        while (sqlReader.Read())
        {
            ListOfSuppliers.Add(sqlReader["CompanyName"].ToString());
        }

        sqlReader.Close();
        sqlConnection.Close();

        return ListOfSuppliers;
    }

    private void frmPurchaseOrderEditor_Load(object sender, EventArgs e)
    {
        ...

        //Populate a list of suppliers.
        cboSuppliers.DataSource = PurchaseOrder.PopulateSuppliers();

        ...
    }

2 个答案:

答案 0 :(得分:0)

也许在Archived列上创建索引可能有所帮助..但是你的代码看起来很好。 但是,如果供应商列表将继续增长,请考虑使用分页数据网格替换组合的可能性。

此外,在使用DDBB时总是使用finally块,并在那里部署Commands和Connection类以释放非托管资源。

答案 1 :(得分:0)

我认为你的代码非常好......但是如果表中的数据太多,那么我认为组合框不是你的最佳选择......其他替代方案......比如GridView, ListView,Repeater ......总是有客户端。

当使用任何资源,如SqlReader,File等(所有使用IDisposable接口的类库类型)时,你应该使用“using”语句,它将负责分配以及处理资源...

点击here了解有关使用声明

的更多信息