C# 保存用C动态填充的datagridview#
我正在寻找一种方法来解决我的问题,与前面的一个问题有关 我必须在Datagridview中管理不同的付款方式 用户(例如出纳)必须在服务结束时检查他们所有的钱 在父窗体中,我显示付款方式名称,自动显示来自其他数据库的金额,两个空列和一个带有按钮“详细信息”的列 最初,父窗体中的datagridview如下所示:C# 保存用C动态填充的datagridview#,c#,sql-server,dynamic,datagridview,C#,Sql Server,Dynamic,Datagridview,我正在寻找一种方法来解决我的问题,与前面的一个问题有关 我必须在Datagridview中管理不同的付款方式 用户(例如出纳)必须在服务结束时检查他们所有的钱 在父窗体中,我显示付款方式名称,自动显示来自其他数据库的金额,两个空列和一个带有按钮“详细信息”的列 最初,父窗体中的datagridview如下所示: PAYMENT | QTY | AUTOMATIC | MANUAL | DIFF. | DETAILS | _____________|______
PAYMENT | QTY | AUTOMATIC | MANUAL | DIFF. | DETAILS |
_____________|_________|_____________|__________|__________|___________|
CREDIT CARD | 2 | 46.80 | | | [DETAILS] |
CHECK | 1 | 25.65 | | | [DETAILS] |
BANK TRANSFER| 1 | 150.25 | | | [DETAILS] |
PAYMENT | QTY | AUTOMATIC | MANUAL | DIFF. | DETAILS |
_____________|_________|_____________|__________|__________|___________|
CREDIT CARD | 2 | 46.80 | 33.90 | -12.90 | [DETAILS] |
CHECK | 1 | 25.65 | | | [DETAILS] |
BANK TRANSFER| 1 | 150.25 | | | [DETAILS] |
当用户单击详细信息按钮时,我将显示一个子表单,其中包含另一个datagridview,其中包含付款方法的详细信息。我在父窗体中按如下方式加载窗体:
var details = new FrmDetails("FormName", "IdOfPaymentMethod");
details.ShowDialog();
例如,对于信用卡,我在子表单中得到一个datagridview,如下所示:
DATE/HOUR | TICKET NUMBER | AMOUNT | CHECK |
_____________________|_______________|__________|_________|
01/11/2015 - 08:23 | 138170 | 12.90 | |
01/11/2015 - 09:45 | 138191 | 33.90 | v |
这是用户预先选择的日期的两次信用卡付款。两者的总和是您在父窗体的“自动”列中看到的。最后一列“CHECK”包含复选框,用户检查是否携带了付款
在我的示例中,用户仅使用33.90检查第二行,而不检查另一行。
当他们关闭此详细信息表单时,父datagridview将如下更新:
PAYMENT | QTY | AUTOMATIC | MANUAL | DIFF. | DETAILS |
_____________|_________|_____________|__________|__________|___________|
CREDIT CARD | 2 | 46.80 | | | [DETAILS] |
CHECK | 1 | 25.65 | | | [DETAILS] |
BANK TRANSFER| 1 | 150.25 | | | [DETAILS] |
PAYMENT | QTY | AUTOMATIC | MANUAL | DIFF. | DETAILS |
_____________|_________|_____________|__________|__________|___________|
CREDIT CARD | 2 | 46.80 | 33.90 | -12.90 | [DETAILS] |
CHECK | 1 | 25.65 | | | [DETAILS] |
BANK TRANSFER| 1 | 150.25 | | | [DETAILS] |
这是应用程序的简单操作。
问题是我必须将每个datagridview“详细信息”保存在SQL数据库(SQL Server)中。用户必须在这些付款之前输入其他信息,因此我认为解决方案是将以前的数据保存在表“ENTRIES”中,然后检索ID max,并将每个datagridview“details”以链接ID_条目作为外键保存。
我可以用一个datagridview“details”来实现这一点,但当我按下父窗体上的“others details”按钮时,我会丢失所有的选中/取消选中
是否有办法将每个datagridview“详细信息”保留到最终录制
我希望我的信息是清晰而全面的。每个
FrmDetails
实例的范围只是按钮单击事件的范围-因此数据不见了
- 或者,您必须为每个付款方式行保留一个
实例集合:FrmDetails
var details = new List<FrmDetails>(); foreach (var row in dataGridView1.Rows) { var detail = new FrmDetails("FormName", "IdOfPaymentMethod"); details.Add(detail); } // And when clicking on a Details button: details[e.ColumnIndex].ShowDialog();