我创建了一个生成报告的Windows窗体应用程序,效果很好。它将一堆DataTable绑定到一堆DataGridViews,将生成的显示导出到位图,每个人都很高兴。我想创建一个自动生成这些报告的服务,而不必在基于Forms的应用程序中手动运行每个报告。我遇到了一个问题,我有一个带有行的DataTable,但是当我将它指定为我的一个DataGridViews的数据源时,DataGridView中的行数仍为零。
以下是我绑定此数据的相关代码片段(但它没有更新):
DataGridView testGrid = new DataGridView();
testGrid.BackgroundColor = Color.Yellow;
for (int i = ServerTableDay.Count - 1; i >= 0; i--)
{
testGrid.DataSource = ServerTableDay[i];
}
无论使用.DataSource =
尝试绑定哪个表,测试网格始终为零行我缺少什么,或者甚至可以在Windows服务中使用它?
答案 0 :(得分:1)
虽然不理想,但您可以在Windows服务中使用DataGridView(仅引用System.Windows.Forms)。我刚刚在服务应用程序中测试过,它运行正常。我说“不理想”,因为DataGridView带来了很多开销,其中大部分是控件实际上是一个可视化控件,在Windows服务应用程序中不需要。
真正的问题是:什么类型的对象是ServerTableDay?它不是System.Data.DataTable(就像你提到的那样),因为你不能像这样访问DataTable的索引(例如ServerTableDay [i])。另外,在调试中验证ServerTableDay对象中是否有数据。
答案 1 :(得分:0)
试试
testGrid.DataSource = ServerTableDay;
我认为你不需要做一个循环。实际上你不会做一个循环。告诉datagridview它的数据源是你的数据表。
答案 2 :(得分:0)
根据您的标题 - 否则您无法将DataGridView与Windows服务一起使用,因为这是一个用户界面控件,Windows服务没有UI控件。话虽如此,如果你想跟踪它,你可能会考虑将输出写入日志文件。
关于您当前的winforms设置问题,请尝试 -
if (ServerTableDay.Count > 0) {
testGrid.DataSource = ServerTableDay;
}