zoukankan      html  css  js  c++  java
  • silverlight3 datagrid c#中动态生成模板列(日期格式)使用IValueConvert对绑定数据的格式化操作

    生成datagrid模板列代码 用c#(格式转换)

    void GetDateTimeTemplate(DataGrid dgrid, string headername, string bindingname)
        {
            DataGridTemplateColumn templateColumn 
    = new DataGridTemplateColumn();
            templateColumn.Header 
    = headername;

            StringBuilder CellTemp 
    = new StringBuilder();

            CellTemp.Append(
    "<DataTemplate ");
            CellTemp.Append(
    "xmlns='http://schemas.microsoft.com/winfx/");

            CellTemp.Append(
    "2006/xaml/presentation' ");
            CellTemp.Append(
    "xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ");

            
    //Be sure to replace "YourNamespace" and "YourAssembly" with your app's

            
    //actual namespace and assembly here

            CellTemp.Append(
    "xmlns:local='clr-namespace:AlantusBI");
            CellTemp.Append(
    ";assembly=AlantusBI'>");

            CellTemp.Append(
    "<Grid>");
            CellTemp.Append(
    "<Grid.Resources>");

            CellTemp.Append(
    "<local:DateTimeConverter x:Key='DateConverter' />");
            CellTemp.Append(
    "</Grid.Resources>");

            CellTemp.Append(
    "<TextBlock ");
            CellTemp.Append(
    "Text = '{Binding " + bindingname + "");

            CellTemp.Append(
    "Converter={StaticResource DateConverter}}' ");
            CellTemp.Append(
    "Margin='4'/>");

            CellTemp.Append(
    "</Grid>");
            CellTemp.Append(
    "</DataTemplate>");

            StringBuilder CellETemp 
    = new StringBuilder();
            CellETemp.Append(
    "<DataTemplate ");

            CellETemp.Append(
    "xmlns='http://schemas.microsoft.com/winfx/");
            CellETemp.Append(
    "2006/xaml/presentation' ");

            CellETemp.Append(
    "xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ");
            CellETemp.Append(
    "xmlns:basics='clr-namespace:System.Windows.Controls;");

            CellETemp.Append(
    "assembly=System.Windows.Controls' >");
            CellETemp.Append(
    "<basics:DatePicker ");

            CellETemp.Append(
    "SelectedDate='{Binding " + bindingname + ", Mode=TwoWay}' />");
            CellETemp.Append(
    "</DataTemplate>");

            templateColumn.CellTemplate 
    = (DataTemplate)XamlReader.Load(CellTemp.ToString());
            templateColumn.CellEditingTemplate 
    = (DataTemplate)XamlReader.Load(CellETemp.ToString());
            dgrid.Columns.Add(templateColumn);

    日期格式转换类  数字格式转换类
    Code

    #region 数字转换 123,345.00
        
    /// <summary>
        
    /// 数字格式转换 如123,345.00
        
    /// </summary>
        public class DoubleConverter : IValueConverter
        {
            
    public object Convert(object value,
                              Type targetType,
                              
    object parameter,
                              CultureInfo culture)
            {
                 
    //Double d = (double )value;
                 
    //return d.ToString("N2");
                
    //上面这样写如果传入的值是string类型 不能转换
               try
                {
                    Double d 
    = double.Parse(value.ToString());
                    
    return d.ToString("N2");
                }
                
    catch (Exception ex)
                { 
                }
                
    return value;
            }
            
    public object ConvertBack(object value,
                                    Type targetType,
                                    
    object parameter,
                                    CultureInfo culture)
            {
                
    string strValue = value.ToString();
                Double result;
                
    if (Double.TryParse(strValue, out result))
                {
                    
    return result;
                }
                
    return value;
            }
        }
        
    在Silverlight中我们可以使用IValueConverter 实现绑定数据的格式化 在页面中使用

    Page.xaml界面设计,Page.xaml代码如下:

    <UserControl xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"  x:Class="SilverlightAppTest.MainPage"
        xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:test
    ="clr-namespace:SilverlightAppTest"
        xmlns:d
    ="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        mc:Ignorable
    ="d" d:DesignWidth="640" d:DesignHeight="480">
        
    <UserControl.Resources>
            
    <test:DoubleConverter x:Key="DoubleConverter"></test:DoubleConverter>
        
    </UserControl.Resources>
        
    <Grid x:Name="LayoutRoot" Loaded="LayoutRoot_Loaded">
            
    <Grid.RowDefinitions>
                
    <RowDefinition Height="Auto"></RowDefinition>
                
    <RowDefinition Height="Auto"></RowDefinition>
                
    <RowDefinition Height="Auto"></RowDefinition>
                
    <RowDefinition Height="Auto"></RowDefinition>
            
    </Grid.RowDefinitions>
                
    <data:DataGrid  x:Name="dg">
                
    <data:DataGrid.Columns> <!--Converter={StaticResource DoubleConverter},-->
                  
    <data:DataGridTextColumn Header="Tax ID" Binding="{Binding TaxID, Mode=OneWay}" />
                    
    <data:DataGridTextColumn Header="价格" Binding="{Binding Price,Converter={StaticResource DoubleConverter},Mode=OneWay}" />
                    
    <data:DataGridTemplateColumn Header="Customer Since">
                        
    <data:DataGridTemplateColumn.CellTemplate>
                            
    <DataTemplate>
                                
    <TextBlock Text="{Binding Path=Price}" x:Name="txtPrice"
                            VerticalAlignment
    ="Center" HorizontalAlignment="Right" Margin="0,0,4,0" />
                            
    </DataTemplate> 
                            
    </data:DataGridTemplateColumn.CellTemplate> 
                        
    </data:DataGridTemplateColumn> 
                                
    <data:DataGridTemplateColumn Header="Customer Since">
                        
    <data:DataGridTemplateColumn.CellTemplate>
                            
    <DataTemplate>
                                
    <StackPanel>
                                
    <TextBlock Text="AAA"
                            VerticalAlignment
    ="Center" HorizontalAlignment="Right" Margin="0,0,4,0" />
                                
    <TextBlock Text="BBB"
                            VerticalAlignment
    ="Center" HorizontalAlignment="Right" Margin="0,0,4,0" />
                                    
    <TextBlock Text="CCC"
                            VerticalAlignment
    ="Center" HorizontalAlignment="Right" Margin="0,0,4,0" />
                                    
    <TextBlock Text="{Binding Path=Name}" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,4,0" />
                                    
    <data:DataGrid x:Name="datagrid" HeadersVisibility="None">

                                    
    </data:DataGrid>
                                
    </StackPanel>
                                
    </DataTemplate>
                        
    </data:DataGridTemplateColumn.CellTemplate>
                    
    </data:DataGridTemplateColumn>
                
    </data:DataGrid.Columns>
                
    <!--<data:DataGrid.RowDetailsTemplate>
                    <DataTemplate>
                        <StackPanel x:Name="SignerPanel"  Margin="48,0,0,0">
                            <StackPanel Orientation="Horizontal">
                                <TextBlock Text="{Binding BorrowerName, Mode=OneWay}" />
                                <TextBlock Text=": Signers" />
                            </StackPanel>
                        
                            <data:DataGrid x:Name="SignerSubGrid" IsReadOnly="False" AutoGenerateColumns="False"
                            Visibility="{Binding Path=Signer, Converter={StaticResource VisibilityConverter}}" 
                            RowEditEnded="SignerSubGrid_RowEditEnded">
                                <data:DataGrid.Columns>
                                    <data:DataGridTemplateColumn Header="Signer Type">
                                        <data:DataGridTemplateColumn.CellTemplate>
                                            <DataTemplate>
                                                <ComboBox x:Name="SignerTypeCbo"
                                            SelectedItem="{Binding Path=SignerType, Mode=TwoWay}"
                                            ItemsSource="{Binding Source={StaticResource SignerTypes}}"
                                            Height="23" />
                                            </DataTemplate>
                                        </data:DataGridTemplateColumn.CellTemplate>
                                    </data:DataGridTemplateColumn>
                                    <data:DataGridTextColumn Header="Required Signer" Binding="{Binding RequiredSigner, Mode=TwoWay}" />
                                    <data:DataGridTextColumn Header="Business Affiliation" Binding="{Binding BusinessAffiliation, Mode=TwoWay}" />
                                    <data:DataGridTextColumn Header="Type of Business" Binding="{Binding TypeOfBusiness, Mode=TwoWay}" />
                                </data:DataGrid.Columns>
                            </data:DataGrid>

                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,12,0,12">
                                <Button x:Name="addNewSigner" Content="Add Signer" 
                            Height="23" Margin="4,0,4,0" 
                            Click="addNewSigner_Click" />
                            </StackPanel>
                           
                        </StackPanel>
                    </DataTemplate>
                </data:DataGrid.RowDetailsTemplate>
    -->
            
    </data:DataGrid>
            
    <ScrollViewer Grid.Row="1">
                
    <Canvas x:Name="MainCanvas" Background="White">
                
    <StackPanel Orientation="Horizontal"   VerticalAlignment="Top" >
                    
    <Image x:Name="img" Stretch="None"   Margin="16" Source="china_life_logo.png"  />
                    
    <Image x:Name="img2" Stretch="Fill"   Margin="16"/>
                    
    <!--<Image x:Name="img3" Stretch="None" Margin="16" Source="main_visual_dim.jpg"/>-->
                
    </StackPanel>
                    
    </Canvas>
            
    </ScrollViewer>
            
    <Button x:Name="btn"  Width="100" Height="25" Grid.Row="2" Click="btn_Click"></Button>
          
    <Button x:Name="btnExport" Content="导出到Excel"  Width="100" Height="25" Grid.Row="3"  Click="btnExport_Click"></Button>
        
    </Grid>
    </UserControl>
    编辑Page.xaml的后台代码,Page.xaml.cs的代码为

     private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
            {
                List
    <Book> list = new List<Book>();
                
    for (int i = 0; i < 4; i++)
                {
                    Book book 
    = new Book();
                    book.ID 
    = i.ToString();
                    book.Name 
    = i.ToString() + "Silverlight开发  kafa";
                    book.Price 
    = 123456;
                    list.Add(book);
                }
    }
    主要是在页面中修改代码 添加上资源
     <UserControl.Resources>
            
    <test:DoubleConverter x:Key="DoubleConverter"></test:DoubleConverter>
        
    </UserControl.Resources>
    按F5运行可看到价格段的记录在datagrid中显示时具有格式(本例中显示为 123,345.00)
  • 相关阅读:
    python数据分析常用包之Matplotlib
    python数据分析常用包之Scipy
    python数据分析常用包之Pandas
    python数据分析常用包之numpy
    常见算法之‘插入类排序’
    CRM管理系统流程.king_admin
    常见算法之‘选择排序’
    常见的算法排序之交换类排序
    常用正则表达式
    scss在ide的命令参数
  • 原文地址:https://www.cnblogs.com/z_lb/p/1576331.html
Copyright © 2011-2022 走看看