GridControl中每个单元格的EditSettings [英] EditSettings for each cell in GridControl

查看:115
本文介绍了GridControl中每个单元格的EditSettings的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表(DevExpress GridControl),用符号保存引号,每个单元格可以有不同的EditSettings类型



DisplayFormat =###。 00000或

DisplayFormat =###。0000或

DisplayFormat =###。000或

DisplayFormat = ###。00或



DisplayFormat取决于Digit列中的数据(数字)。如何为每个单元格设置DisplayFormat,而不是为整列设置?谢谢。



符号| MS SQL值|数字| 我希望在GridControl中拥有的值 
USD / JPY | 101,50000 | 2 | 101,50
美元/日元| 101,50000 | 3 | 101,500
EUR / USD | 1,36500 | 4 | 1,3650
EUR / USD | 1,36500 | 5 | 1,36500

解决方案

您可以更改 DisplayFormat 通过处理 RowCellStyle 事件。



请看这里:

RowCellStyle事件 [ ^ ]


我已经决定了我的任务 CellTemplateSelector



  public   class  CellTemplateSelector:DataTemplateSelector 
{
public override DataTemplate SelectTemplate( object item,DependencyObject容器)
{
FrameworkElement presenter = container as FrameworkElement;
GridCellData gridCellData = item as DevExpress.Xpf.Grid.GridCellData;
RowData rowData =(gridCellData.RowData as RowData);
decimal decPriceDigit = 0 ;

if (rowData!= null
{
DbDataRecord dbDataRecord =((gridCellData.RowData as RowData).Row as DbDataRecord);

if (dbDataRecord!= null
{
decPriceDigit = Convert.ToDecimal(dbDataRecord [ PriceDigit]);
return (DataTemplate)presenter.FindResource( string .Format( CellTemplatePrice_Digit {0},decPriceDigit));
}
}

返回 base .SelectTemplate (项目,容器);
}
}







 < span class =code-keyword><   usercontrol.resources  >  

< local:celltemplateselector x:key = cellTemplateSelector xmlns:x = < span class =code-keyword>#unknown xmlns:local = #unknown / >

< <温泉n class =code-leadattribute> datatemplate x:key = CellTemplatePrice_Digit2 xmlns:x = #unknown >
< dxe:textedit editvalue = {绑定路径=值} displayformatstring = #,###,###。00 xmlns:dxe = #unknown >
< < span class =code-leadattribute> / dxe:textedit >
< / datatemplate >
< ; datatemplate x:key = CellTemplatePrice_Digit3 xmlns:x = #unknown >
< dxe:textedit editvalue = {Binding Path = Value} displayformatstring = #,## #,###。000 xmlns:dxe = #unknown >
< / dxe:textedit >
< / datatemplate >


< / usercontrol.resources >





 <   dxg:gridcolumn     fieldname   =  EntryPrice    header   = 价格    dxg:celltemplateselector   =  {StaticResource cellTemplateSelector}    xmlns:dxg   =  #unknown >  
< / dxg:gridcolumn >

< span class =code-keyword><
dxg:gridcolumn fieldname = PriceDigit xmlns:dxg < span class =code-keyword> = #unknown >
< / dxg:gridcolumn >


Hi, I have a table (DevExpress GridControl) that holds quotes by symbols, each cell can have a different EditSettings type

DisplayFormat="###.00000" or
DisplayFormat="###.0000" or
DisplayFormat="###.000" or
DisplayFormat="###.00" or

DisplayFormat depends on data (numeric) in column Digit. How can I set DisplayFormat for each cell, not for whole column? Thanks.

Symbol  | MS SQL value | Digit | Value I want to have in GridControl
USD/JPY	|  101,50000   |   2   | 101,50	
USD/JPY	|  101,50000   |   3   | 101,500
EUR/USD	|    1,36500   |   4   | 1,3650	
EUR/USD	|    1,36500   |   5   | 1,36500

解决方案

you can change DisplayFormat by handling RowCellStyle event.

please see here:
RowCellStyle event[^]


I've decided my task whth CellTemplateSelector

public class CellTemplateSelector : DataTemplateSelector  
    {
        public override DataTemplate SelectTemplate(object item, DependencyObject container)
        {
            FrameworkElement presenter = container as FrameworkElement;
            GridCellData gridCellData = item as DevExpress.Xpf.Grid.GridCellData;
            RowData rowData = (gridCellData.RowData as RowData);
            decimal decPriceDigit = 0;

            if (rowData != null)
            {
                DbDataRecord dbDataRecord = ((gridCellData.RowData as RowData).Row as DbDataRecord);
               
                if (dbDataRecord != null)
                {
                    decPriceDigit = Convert.ToDecimal(dbDataRecord["PriceDigit"]);
                    return (DataTemplate)presenter.FindResource(string.Format("CellTemplatePrice_Digit{0}",decPriceDigit));
                }                            
            }

            return base.SelectTemplate(item, container);
        }
    }




<usercontrol.resources>

    <local:celltemplateselector x:key="cellTemplateSelector" xmlns:x="#unknown" xmlns:local="#unknown" />

    <datatemplate x:key="CellTemplatePrice_Digit2" xmlns:x="#unknown">
        <dxe:textedit editvalue="{Binding Path=Value}" displayformatstring="#,###,###.00" xmlns:dxe="#unknown">
        </dxe:textedit>
    </datatemplate>
    <datatemplate x:key="CellTemplatePrice_Digit3" xmlns:x="#unknown">
        <dxe:textedit editvalue="{Binding Path=Value}" displayformatstring="#,###,###.000" xmlns:dxe="#unknown">
        </dxe:textedit>
    </datatemplate>


</usercontrol.resources>



<dxg:gridcolumn fieldname="EntryPrice" header="Price" dxg:celltemplateselector="{StaticResource   cellTemplateSelector}" xmlns:dxg="#unknown">
</dxg:gridcolumn>

<dxg:gridcolumn fieldname="PriceDigit" xmlns:dxg="#unknown">
</dxg:gridcolumn>


这篇关于GridControl中每个单元格的EditSettings的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆