2011-10-12 143 views
0

我创建了一个生成报告的Windows窗体应用程序,效果很好。它将一堆DataTables绑定到一堆DataGridViews,将得到的显示结果导出到位图,并且每个人都很高兴。我想创建一个自动生成这些报表的服务,而不必在我的基于表单的应用程序中手动运行每个报表。我遇到了一个问题,我有一个DataTable中有行,但是当我将它分配给我的DataGridViews的数据源时,DataGridView中的行数保持为零。我可以在Windows服务中使用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

我想你是在谈论Windows窗体,而不是Windows服务。 – Amry

回答

0

根据您的标题 - 不,你将不能够使用一个DataGridView与Windows服务,因为这是一个用户界面控制和Windows服务就没有UI控件。这就是说,如果你想跟踪它,你可能会考虑将你的输出写入日志文件。

至于你当前的WinForms安装问题的尝试 -

if (ServerTableDay.Count > 0) { 
    testGrid.DataSource = ServerTableDay; 
} 
+0

我并不想让用户看到它,只需在“控制台”上显示它就可以将它绘制到位图上。既然这是一项服务,这是否意味着它即使不可见也不会“画”任何东西? –

+0

到目前为止我所提出的最好的就是你所提出的。因为它不会工作。 –

+0

我唯一能想到的其他事情就是让您生成一个HTML页面,您可以查看并查看格式是否正在寻找。我不认为我曾经使用过Windows服务的绘图功能 - 理论上它应该可以在你创建一个位图的时候起作用。 – gjohn

0

试试看

testGrid.DataSource = ServerTableDay; 

我不认为你需要做一个循环。其实你不会做一个循环。只需告诉datagridview它的数据源是你的数据表。

+0

我有循环,因为我有许多datagrids,我绑定到许多datagridviews列表。即使我做了一个datatable到单个gridview,我仍然没有行? –

1

虽然不理想,您可以使用Windows服务中一个DataGridView(只是参考System.Windows.Forms)。我只是在服务应用程序中测试,并且工作正常。我说“不理想”,因为DataGridView有很多开销,其中大部分是控件是一个真正的可视化控件,这在Windows服务应用程序中并不需要。

真正的问题是:什么类型的对象是ServerTableDay?它不是一个System.Data.DataTable(就像你提到的那样),因为你不能像这样访问DataTable的索引(例如ServerTableDay [i])。另外,在调试中验证ServerTableDay对象中有数据。

+0

这就是我所引用的,但我无法将行放入它。 ServerTableDay是一个列表,我收集了一堆表并将其添加到我循环访问的各种DataGridView。片段没有说清楚,但为了清楚起见,我省略了一些循环内容。在WinForms应用程序中效果很好。我证实行存在于我引用的ServerTableDay索引中,但GridView neved move的行数? –

+0

这也帮助我将Winforms应用程序转换为控制台。 – bendecko

相关问题