如何使用datagridview在会计winform应用程序中显示期初和期末余额

时间:2014-04-23 18:43:43

标签: c# winforms visual-studio-2012 datagridview accounting

我正在开发一个Windows窗体会计应用程序。应用程序生成条目的会计分类帐。用户选择生成分类帐的日期时间段。从数据库获取值后,逻辑计算期初余额。问题是,如何在datagridview的第一行和最后一行分别显示开始和结束余额,因为datagridview的行是数据绑定。

代码:

                dataGridView1.AutoGenerateColumns = false;
                dt = new DataTable();
                sda = new SqlDataAdapter("select CONVERT(varchar,date,101) as date,desc,credit,debit where user_Id='" + comboBox1.SelectedValue + "' and date BETWEEN'" + dateTimePicker1.Value.Date + "'AND'" + dateTimePicker2.Value.Date + "'", con);
                sda.Fill(dt);
                dataGridView1.ColumnCount = 3;
                dataGridView1.Columns[0].Name = "date";
                dataGridView1.Columns[0].HeaderText = "Date";
                dataGridView1.Columns[0].DataPropertyName = "date";
                dataGridView1.Columns[1].Name = "desc";
                dataGridView1.Columns[1].HeaderText = "Description";
                dataGridView1.Columns[1].DataPropertyName = "desc";
                dataGridView1.Columns[2].Name = "credit";
                dataGridView1.Columns[2].HeaderText = "Credit";
                dataGridView1.Columns[2].DataPropertyName = "credit";
                dataGridView1.Columns[3].Name = "debit";
                dataGridView1.Columns[3].HeaderText = "Debit";
                dataGridView1.Columns[3].DataPropertyName = "debit";

现在,当我计算期初余额并使用datagridview1.Rows.Add()直接添加它时,它会给出错误,说明您无法以编程方式添加行,因为这些行是数据绑定的。

所以,请帮我实施。如果你有其他一些显示余额,请提及。

1 个答案:

答案 0 :(得分:0)

user2748092, 如您所见,您无法向datbound datagridview添加行。删除绑定,并添加每一行,计算总计,然后将最后一行添加为总计。 Perhpas修改最后一行颜色以区分总计行。 在我看来,另一个选择是在gridview附近显示总数。因为它受到约束,所以确保总数在变化时增加/减少。

添加了代码 这应该可以帮助您找到总数。绑定datagrid后调用。粗略编辑可能需要更改。

For Each gvRow as GridViewRow in dataGridView1.Rows
    total += double.parse(grvRow.Cells(0).Text
Next
TotalTextBox.Text = total

使用此方法,您可以循环dt(datatable)的结果,并将每一行应用于gridview。这是一个让你入门的例子。

Dim row As String() = New String() {"1", "Product 1", "1000"}
 DataGridView1.Rows.Add(row)

尝试编写代码,然后询问有关您遇到问题的代码的问题。