【问题标题】:DataGridView and dataset best practice frustrationDataGridView 和数据集最佳实践挫折
【发布时间】:2010-02-08 03:38:07
【问题描述】:

我正在使用 c# 2008 winforms。

我发现试图找到在 Winforms 应用程序中使用数据集和 datagridviews 的最佳实践方法来实现我想要的结果非常令人沮丧。

基本上我想(这是我想在所有应用程序中使用的通用方法) 1. 从 sql 表中填充数据集 2.从数据集中填充一个datagridview 3.datagridview中的一些列会从数据集字段计算结果 4. 在 datagridview 中编辑数据并将编辑同步回数据集源。 5. datagridview 中的编辑只通过数据库上的存储过程更新到数据库源,我从不使用 sqlAdaptor.update 方法 6.我想要datagridview中总和列的底部页脚 7.我想要一列显示所有行的总和

我可以做所有这些单独的事情,但我很沮丧地发现我的代码到处都是,而且在我想要上述所有内容或只是其中一些方面有所不同。

例如,我可以通过将数据集绑定到 datagridview 来在 datagridview 和数据集之间同步信息,但是我不能在 datagridview 等中拥有自定义列和自定义行等。

这一切都非常令人沮丧,我希望能指出一些最佳实践方法,以实现上述最佳结果。 任何建议表示赞赏。

提前致谢

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    “我可以做所有这些个人的事情 但是很沮丧地找到我的代码 最终到处都是 不同的我是否想要所有 上面或只是其中的一些。”

    我能得到的是,您需要将应用程序组织成层或层。您可以将通用功能放入一个层并分配责任。以下是一个可能会给你一个想法的模式

    • 演示文稿

      WebForms、Html 页面等

    • 业务逻辑层 (BLL)

      业务对象、业务规则对象

    • 数据访问层 (DAL)

      存储库对象(负责访问您的数据集), 模型(所有你的数据集/表适配器等)

    “我不能有自定义列和自定义 datagridview 中的行等。”

    如果您的一个或多个 datagridviews 需要来自 TableAdapter (Model(DAL)) 的一些数据,但自定义列或行,您的 BLL 层应该在此达到目的。它应该有点如下:

    AccountGridViewClient(演示)--> AccountsManager(BLL)
    --> AccountsRepository(DAL) -->AccountsTableAapter -->DB

    AccountGridViewAdmin(演示)--> AccountsManager(BLL)
    --> AccountsRepository(DAL) -->AccountsTableAapter -->DB

    也请查看this thread

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      要添加 Asad,如果您有一个业务逻辑,您将在其中执行您想要的计算,即从数据库中获取数据 -> 填充您稍后绑定到 datagridview 的集合,那么您会更容易。

      您可以通过执行类似的操作来编辑标题

      ` dgv.Columns["Name"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; dgv.Columns["Name"].HeaderText = "Name";

             dgv.Columns["Quantity"].AutoSizeMode =   DataGridViewAutoSizeColumnMode.ColumnHeader;
              dgv.Columns["Quantity"].HeaderText = "Quantity";
      
      
              dgv.Columns["TotalPrice"].AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader;
              dgv.Columns["TotalPrice"].HeaderText = "Total Price";
              dgv.Columns["TotalPrice"].DefaultCellStyle.Format = "0.00";`
      

      6.我想要数据网格视图中总和列的底部页脚

      至于页脚结帐此链接:Add a footer to a datagridview

      【讨论】:

        猜你喜欢
        • 2015-09-18
        • 1970-01-01
        • 1970-01-01
        • 2012-09-04
        • 2010-09-05
        • 1970-01-01
        • 2014-04-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多