DataGridView和数据集最佳实践受挫

时间:2010-02-08 03:38:08

标签: c# winforms

我正在使用c#2008 winforms。

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

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

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

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

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

提前致谢

2 个答案:

答案 0 :(得分:1)

  

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

我能得到的是,您需要将您的应用程序组织成层或层。您可以将常用功能放入图层并承担责任。以下是Pattrn可能会给你一个想法

  • 演示文稿

    WebForms,Html Pages等

  • 业务逻辑层(BLL)

    Business Objects,业务规则对象

  • 数据访问层(DAL)

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

  

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

如果您的一个或多个datagridviews需要TableAdapter(Model(DAL))中的某些数据,但需要自定义列或行,那么您的BLL层应该在此处服务于此目的。它应该有点如下:

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

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

同时查看this thread

希望有所帮助

答案 1 :(得分:0)

要添加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.我想在datagridview

中得到总计列总数的下限

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