首页 新闻 会员 周边

DataGrid显示列问题

0
[已解决问题] 解决于 2013-04-23 15:54
V_Rec_SalesOrderInfo[] dg = (V_Rec_SalesOrderInfo[])dgRecord.DataSource;
            for (int i = 0; i < dg.Count(); i++)
            {
                //if (dg[i].IsSales.ToString() == "True")
                //{
                //    dg[i].IsSales = "是";
                //}
                //else
                //{

                //}

                dg[i].IncludeTaxTotle = Convert.ToDecimal(dg[i].IncludeTaxTotle);
            }
            DataGridTableStyle ts = new DataGridTableStyle();
            ts.MappingName = dg.GetType().Name;

            DataGridColumnStyle includeTaxTotle = new DataGridTextBoxColumn();
            includeTaxTotle.MappingName = "IncludeTaxTotle";
            includeTaxTotle.HeaderText = "价格";
            includeTaxTotle.Width = 50;
            includeTaxTotle.NullText = "";
            ts.GridColumnStyles.Add(includeTaxTotle);

            DataGridColumnStyle isSales = new DataGridTextBoxColumn();
            isSales.MappingName = "IsSales";
            isSales.HeaderText = "是否销售";
            isSales.Width = 50;
            isSales.NullText = "";
            isSales.GetType();
            ts.GridColumnStyles.Add(isSales);

            dgRecord.TableStyles.Add(ts);

 

因为isSales是bool型的,可是我想显示 “是” 或 “否” 怎么办,还有 另一个列我想显示小数点后两位,现在是后四位,怎么办?

淘@淘的主页 淘@淘 | 小虾三级 | 园豆:602
提问于:2013-04-23 11:24
< >
分享
最佳答案
0

你可以在实体类中加一个临时列来显示文字

Math.Round(0.333333,2); //按照四舍五入的国际标准

 

double dbdata=0.335333
string str1=String.Format("{0:F}",dbdata);//默认为保留两位

奖励园豆:5
芒果の冰 | 初学一级 |园豆:187 | 2013-04-23 11:30

不行,不能改实体类,实体类这块是自动生成的,给你看一个实体类上边的注释:

//------------------------------------------------------------------------------
// <auto-generated>
//     此代码由工具生成。
//     运行时版本:2.0.50727.3643
//
//     对此文件的更改可能会导致不正确的行为,并且如果
//     重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 11:33

这块是wince客户端的

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 11:34

string result= String.Format("{0:N2}",Convert.ToDecimal("0.333333").ToString()); 

 

芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 11:35

@淘@淘: 

dg是在什么地方 被添加到控件中的
芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 11:37

@芒果の冰: 就是整个页面就一个控件GridView

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 11:39

@芒果の冰: 大侠是这样写吗?不对啊

dg[i].IncludeTaxTotle = Convert.ToDecimal(String.Format("{0:N2}", dg[i].IncludeTaxTotle.ToString())); 

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 11:41

@淘@淘: 数据源呢  你dg不是数据源嘛 数据源不需要扔给控件嘛  那你是怎么绑定的呢

芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 11:41

@芒果の冰: 价格还是显示的:470.0000

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 11:41

@芒果の冰: 这样绑定的数据源啊

DataGridTableStyle ts = new DataGridTableStyle();
            ts.MappingName = dg.GetType().Name;

这个是我看我们这的这么写的,具体什么意思,不太明白

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 11:42

@淘@淘: String.Format("{0:F}", Convert.ToDouble("4500.000000"))

芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 11:47

@芒果の冰: 你这是啥呀 不明白,4500.00000 这块应该是个动态的数啊 再说 我的IncludeTaxTotle 这个是   Decimal这个类型的,不是String类型的,你要我怎么转

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 11:53

@淘@淘: 你自己再建一个类继承自数据源那个实体 并添加一些你自定义属性 可不可以?

芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 11:54

@淘@淘: String.Format("{0:F}", Convert.ToDecimal("4500.000000"))

芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 11:55

@芒果の冰: 想过再建一个类,可是就没有简单的方法吗 就用那个类,你的String.Format("{0:F}", Convert.ToDecimal("4500.000000"))这句话我还是不明白

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 11:58

@淘@淘: dg[i].IncludeTaxTotle =decimal.Round(dg[i].IncludeTaxTotle,2);

芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 11:59

@芒果の冰: 没有你这个方法啊,“具有一些无效的参数”,我用的是2008

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 12:01

@淘@淘: dg[i].IncludeTaxTotle =Math.Round(dg[i].IncludeTaxTotle,2) 

芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 13:10

@芒果の冰: 不行,还是具有无效参数

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 13:14

@淘@淘: 不可能的 这个方法 .net framework 1.1就有了

http://msdn.microsoft.com/zh-cn/library/6be1edhb(v=vs.80).aspx

芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 13:22

@淘@淘: 

重写DataGridTextBoxColumn来实现

public class MyForm : DataGridTextBoxColumn
{
    protected override object GetColumnValueAtRow(CurrencyManager source, int rowNum)
    {
        object v = base.GetColumnValueAtRow(source, rowNum);
        return (v.ToString() == "True") ? "" : "";
    }
}
芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 13:44

@芒果の冰: 

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 13:46
            DataGridBoolColumn isSales = new DataGridBoolColumn();
            isSales.MappingName = "IsSales";
            isSales.HeaderText = "是否销售";
            isSales.Width = 50;
            isSales.NullText = "";
            isSales.GetType();
            isSales.TrueValue = "";
            isSales.FalseValue = "";

 

@淘@淘: 

芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 13:50

@淘@淘: 你这行代码写了这么多等号。。

提示很明显 存在此方法 你传入的参数类型不对 你的 

dg[i].IncludeTaxTotle 不是 decimal类型的
芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 13:54

@芒果の冰: 

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 13:57

@芒果の冰: 

dg[i].IncludeTaxTotle 不是 decimal类型的,那是什么类型的
淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 13:58

@淘@淘: 鼠标放上会有提示

芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 13:59

@芒果の冰: decimal? 这个类型的 带个问号

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 14:01

@淘@淘: 

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 14:03

@淘@淘: 从图片上看 你把鼠标放到了 i 的上面  他显示 局部变量 int i

如果是 decimal?  那么你就要 

dg[i].IncludeTaxTotle =Math.Round((decimal)dg[i].IncludeTaxTotle,2) 
芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 14:09

@芒果の冰: 

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 14:12

@淘@淘: 重写DataGridTextBoxColumn试试 上面给出了重写方法

芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 14:15

@芒果の冰: 

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 14:20

@淘@淘: 

你那个功能太陈旧了 好多都没有啊

你写上 

protected override object  空格 你看看它提示可以重写哪个方法
芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 14:27

@芒果の冰: 我写了一个类继承自那个类,可是运行报错:ThreadAbortException,是怎么回事啊

 

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 14:48

@淘@淘: 数组没初始化啊

V_Rec_SalesOrderInfo2[] dg2 = new V_Rec_SalesOrderInfo2[dg.Length];
芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 14:52

@芒果の冰: 写上了可还是不行啊 我是不是打扰你了呀 要是你忙的话就算了我自己弄吧

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 14:56

@淘@淘: 代码应该没问题 调试下看看哪行报错

芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 15:00

@芒果の冰: 不知道为什么就是在赋值的时候就报错了

dg2[i].UserCode = dg[i].UserCode;

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 15:19

@淘@淘: 肯定是数组没初始化

芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 15:23

@芒果の冰: 可是我照你说的这样写了啊

 V_Rec_SalesOrderInfo2[] dg2 = new V_Rec_SalesOrderInfo2[dg.Length];

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 15:25

@芒果の冰: 好像是dg2有问题一样,但我不知道是哪的问题

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 15:28

@淘@淘: 这个问题解决了,加了句dg2[i] = new V_Rec_SalesOrderInfo2();

淘@淘 | 园豆:602 (小虾三级) | 2013-04-23 15:33

@淘@淘: 恩 还是初始化问题 哈哈

芒果の冰 | 园豆:187 (初学一级) | 2013-04-23 15:40
其他回答(1)
-2

欢迎加入.Net高级部落173844862

辛巴 | 园豆:622 (小虾三级) | 2013-04-23 11:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册