LINQ查询是DataGridView的数据源。如何控制列?

doni49

会员
已加入
2014年3月18日
留言内容
14
编程经验
10+
如何控制DataGridView列的以下方面?
  • 不要显示某些列(要查询的对象在我不想显示的多个字段中包含ID值)。
  • 分别设置理由,因为其中三列将显示美元金额,我希望它们是正确的
  • 设置内容的格式(相同的三美元金额列应仅显示两位小数)。

还有两个相关的问题。我正在写基本上是电子支票簿的东西。

1)我需要在两列之一中显示一个字段(交易量):
  • 如果该字段为负,请在提款栏中显示
  • 如果字段为正,则在存款列中显示

2)我需要一个与查询中的字段不相关的列。这将用于运行余额,我希望有一个功能可以从上一行的运行余额值中添加/减去每笔交易。我可以这样做吗?如果是这样,您可以提供任何指示吗?

TIA!
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,501
地点
悉尼,澳大利亚
编程经验
10+
在设计器中创建您的列,并设置其DataPropertyName属性以告诉它们绑定到数据源的哪些属性。然后,在绑定之前将AutoGenerateColumns属性设置为false,这样就不会显示不希望显示的项目的那些属性。您还可以添加一列,而不将其DataPropertyName设置为具有未绑定的列。

关于在两列中显示来自一个源属性的数据,只需对两列使用相同的DataPropertyName值。我相信您可以处理网格的CellFormatting事件,以告知那些列仅在某些情况下才呈现单元格中的值,从而使您可以在一列中显示某些数据,而在另一列中显示某些数据。
 

doni49

会员
已加入
2014年3月18日
留言内容
14
编程经验
10+
在设计器中创建您的列,并设置其DataPropertyName属性以告诉它们绑定到数据源的哪些属性。然后,在绑定之前将AutoGenerateColumns属性设置为false,这样就不会显示不希望显示的项目的那些属性。您还可以添加一列,而不将其DataPropertyName设置为具有未绑定的列。

关于在两列中显示来自一个源属性的数据,只需对两列使用相同的DataPropertyName值。我相信您可以处理网格的CellFormatting事件,以告知那些列仅在某些情况下才呈现单元格中的值,从而使您可以在一列中显示某些数据,而在另一列中显示某些数据。
我觉得我要转圈了。我看过很多例子说"将数据绑定到查询"。但是我还没有弄清楚如何通过设计师做到这一点。我有一个函数,该函数在该函数末尾将数据文件读入内存,我创建了查询,然后将DataGrid绑定到查询。但是,这当然意味着它在设计时不存在,因此我无法在设计时进行绑定(绑定到列)。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,501
地点
悉尼,澳大利亚
编程经验
10+
我还没有弄清楚如何通过设计师做到这一点。

那是因为你做不到。我没有说关于绑定设计师的任何事情。我说过要在设计器中创建列并设置其DataPropertyName属性,以告诉它们要绑定到数据源项的哪个属性。然后,您可以在运行时在代码中设置数据源,并且正确的绑定项属性将显示在网格的正确列中。
 

doni49

会员
已加入
2014年3月18日
留言内容
14
编程经验
10+
谢谢。那讲得通。我试图通过设置"Data Bindings" in the UI.

我能够使它工作。但是还有另一个问题。在所附的屏幕截图中,您将看到所有列都显示为“右对齐”。但是,只有最右边的三列才是正确的。

MyAppColumnJustification.png
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,501
地点
悉尼,澳大利亚
编程经验
10+
您在设计器中创建了列,然后在设计器中配置了列。它们具有属性,并且它们与设计器中的所有其他属性一样进行设置。
 

doni49

会员
已加入
2014年3月18日
留言内容
14
编程经验
10+
这就是我的想法,但是我使用了设计器来设置所有列,除了指定为中左的三列。右边的三个(通过设计器)设置为“中右”。

但是,正如您所看到的,它们都是以正确的理由出现的。
 

doni49

会员
已加入
2014年3月18日
留言内容
14
编程经验
10+
“收款人”列是应该对齐的列之一,但事实并非如此。您看到了第一个屏幕截图,显示它是正确的。这是设计器中的列定义属性页面。

MyAppPayeeColumn.png
 

doni49

会员
已加入
2014年3月18日
留言内容
14
编程经验
10+
好的,我找到了。即使我已经配置了列以显示所需的对齐方式,但我仍然发现RowTemplate有一个设置>DefaultCellStyle设置为右中。我将其更改为“未设置”,现在让该列具有控制权。
 
最佳 底部