解决 如何在动态变化的数据网格中更改货币,列/单元格的格式

dv2020

会员
已加入
2020年12月18日
留言内容
19
编程经验
1-3
大家好,

我正在尝试找出从MySQL填充的动态数据网格上将列/单元格更改为本地货币的最佳方法
  1. 当前数据网格是通过MySQL查询动态填充的,标题和数据可以更改。
  2. 我想要代码,以检查列的标题是否="Money",则整个列将以当地货币显示。
我怀疑需要在填充表格后完成此操作吗?我最初试图使用以下内容,但是它的动态性"money" does not exist?

This does not work:
dggrid1.Columns["MONEY"]


提前致谢

大卫
 
Solution
大家好,

对于遇到此帖子的其他任何人。我今天编写了此代码,该代码适用于从MySQL源动态加载的DataGridView。

添加新列时,此事件将检查该列,然后根据标题分配货币或百分比格式。效果很好。


在添加的列上更改列格式:
   private void dataGrid1_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
        {

            if (e.Column.HeaderText.Trim().ToLower().Contains("avg price") || e.Column.HeaderText.Trim().ToLower().Contains("open value"))
            {
                e.Column.DefaultCellStyle.Format = "c1";
                e.Column.DefaultCellStyle.FormatProvider =...

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,501
地点
悉尼,澳大利亚
编程经验
10+
检查列标题是否="Money",则整个列将以当地货币显示。
看你在那写的东西。那基本上是伪代码。你怎么写"if" in your explanation of the requirement and then not have an if statement in your code? You need to think about the logic first and get a firm understanding of that in your head or, if you need to, written down. You can then write code to implement that logic specifically, rather than some vague idea of what the result should be.

If you're saying, without actually saying, that you want to check all columns in the grid then it should be fairly obvious that a loop is required. The grid has a Columns property that is a collection of columns. How convenient! Inside the loop, you write your if statement to test the condition you need to test on the current column and then perform the task you need to perform on that column. The task is setting the format of the data in the column and it should be fairly easy to find out how to do that with a simple web search. I just searched for "datagridview format column as 钱" 并且第一个结果提供了答案,我敢肯定其他几个结果也可以。

要像开发人员那样思考,您需要:
  1. 将一个问题分解为较小的问题,然后分别解决每个问题。
  2. 研究您尚不了解的特定子问题。
  3. 首先考虑所需的逻辑并开发适用于手动过程的算法。
  4. 编写代码以具体实现该算法。
  5. 调试代码以确定确切的位置以及行为与您的期望有何不同。
  6. 将子问题的解决方案合并为原始问题的单个解决方案。
在您的情况下,查找具有特定标题文本的列并设置列数据的格式是完全独立的问题,应这样对待。毫无疑问,两者都应涉及。如果您不能执行任何一项操作,则应该发布两个单独的问题:每个问题一个。
 

dv2020

会员
已加入
2020年12月18日
留言内容
19
编程经验
1-3
您好

感谢回复。

麻烦再来一个更直接的问题和例子。随意删除此帖子,因为它目前没有用。
 

dv2020

会员
已加入
2020年12月18日
留言内容
19
编程经验
1-3
大家好,

对于遇到此帖子的其他任何人。我今天编写了此代码,该代码适用于从MySQL源动态加载的DataGridView。

添加新列时,此事件将检查该列,然后根据标题分配货币或百分比格式。效果很好。


在添加的列上更改列格式:
   private void dataGrid1_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
        {

            if (e.Column.HeaderText.Trim().ToLower().Contains("avg price") || e.Column.HeaderText.Trim().ToLower().Contains("open value"))
            {
                e.Column.DefaultCellStyle.Format = "c1";
                e.Column.DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo("en-AU");
            }

            if (e.Column.HeaderText.Trim().ToLower().Contains("market per"))
            {
               e.Column.DefaultCellStyle.Format = "P1";
            }

        }
 
最佳 底部