找回密码
 立即注册

QQ登录

只需一步,快速开始

jim_hujun

初级会员

14

主题

47

帖子

464

积分

初级会员

积分
464

活字格认证

[已处理] c1datagrid绑定

jim_hujun
初级会员   /  发表于:2013-6-5 21:38  /   查看:6265  /  回复:7
用C1datagrid绑定了数据源后,表头显示的是数据库的字段,如何显示为自己定义的中文名称呢?请大神给一个demo事例 万分感谢

7 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-6-6 10:45:00
沙发
jim_hujun

绑定数据源之后,列头会显示为队友字段的名称,需要你在绑定数据源之后对列头文字进行重新设置:
  1.     private void Form3_Load(object sender, EventArgs e)
  2.     {
  3.         DataTable dt = new DataTable();
  4.         dt.Columns.Add("AAA BBB CCC");
  5.         dt.Columns.Add("Name");
  6.         dt.Columns.Add("Description");

  7.         dt.Rows.Add("A1", "B1", "C1");
  8.         dt.Rows.Add("A1", "B1", "C1");
  9.         dt.Rows.Add("A1", "B1", "C1");
  10.         dt.Rows.Add("A1", "B1", "C1");

  11.             
  12.         c1TrueDBGrid1.DataSource = dt;

  13.         c1TrueDBGrid1.Columns[0].Caption = "第一列";
  14.         c1TrueDBGrid1.Columns[1].Caption = "第二列";
  15.         c1TrueDBGrid1.Columns[2].Caption = "第三列";
  16.             
  17.     }
复制代码
回复 使用道具 举报
jim_hujun
初级会员   /  发表于:2013-6-6 11:01:00
板凳
回复 2楼dof的帖子

我现在是在前台绑定了
前台代码如下
  1. <c1:C1DataGrid  c1:C1NagScreen.Nag="True" HorizontalAlignment="Left" Margin="10,10,0,0" Name="c1DataGrid1" VerticalAlignment="Top"  >
  2.             <c1:C1DataGrid.Columns>
  3.                 <!-- First two columns must be headers, put several headers using this custom syntax-->
  4.                 <c1:DataGridTextColumn Header="医院名称" Binding="{Binding hospital_name}" />
  5.                 <c1:DataGridTextColumn Header="人数" Binding="{Binding rc}" />
  6.                 <c1:DataGridTextColumn Header="次均费用" Binding="{Binding cjfy}" />
  7.                 <c1:DataGridTextColumn Header="医保内金额" Binding="{Binding ybje}" />
  8.                 <c1:DataGridTextColumn Header="剔除金额" Binding="{Binding tcje}" />
  9.                 <c1:DataGridTextColumn Header="剔除占比" Binding="{Binding tczb}" />
  10.             </c1:C1DataGrid.Columns>
  11.         </c1:C1DataGrid>
  12. 后台如下
  13.         void client_dataselectCompleted(object sender, ServiceReference.dataselectCompletedEventArgs e)
  14.         {
  15.             if (e.Result != null)
  16.             {
  17.                 view = new PagedCollectionView(e.Result);//集合对象
  18.                 c1DataGrid1.ItemsSource = view;
  19.                 c1DataGrid1.AutoGenerateColumns = false;
  20.                 dataPager1.Source = view;
  21.             }
  22.         }
复制代码
现在这样做已经实现了 但是为什么我的c1DataGrid1.Columns[0] 没有 Caption呢?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-6-6 18:13:00
地板
jim_hujun 你好

我不是很清楚 client_dataselectCompleted 方法是怎么调用的, 我仿照你的代码没有出现类似的问题,我的代码如下:

XAML:
  1. <UserControl x:Class="_9064_License.SilverlightControl3"
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4.     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5.     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6.     mc:Ignorable="d"
  7.     d:DesignHeight="300" d:DesignWidth="400" xmlns:c1="http://schemas.componentone.com/winfx/2006/xaml">
  8.    
  9.     <Grid x:Name="LayoutRoot" Background="White">
  10.         <c1:C1DataGrid  HorizontalAlignment="Left" Margin="10,10,0,0" Name="c1DataGrid1" VerticalAlignment="Top" ItemsSource="{Binding}" AutoGenerateColumns="False"  >

  11.             <c1:C1DataGrid.Columns>
  12.                 <!-- First two columns must be headers, put several headers using this custom syntax-->
  13.                 <c1:DataGridTextColumn Header="医院名称" Binding="{Binding hospital_name}" />
  14.                 <c1:DataGridTextColumn Header="人数" Binding="{Binding rc}" />
  15.                 <c1:DataGridTextColumn Header="次均费用" Binding="{Binding cjfy}" />
  16.                 <c1:DataGridTextColumn Header="医保内金额" Binding="{Binding ybje}" />
  17.                 <c1:DataGridTextColumn Header="剔除金额" Binding="{Binding tcje}" />
  18.                 <c1:DataGridTextColumn Header="剔除占比" Binding="{Binding tczb}" />
  19.             </c1:C1DataGrid.Columns>
  20.         </c1:C1DataGrid>
  21.     </Grid>
  22. </UserControl>
复制代码


后台代码:
  1.     public partial class SilverlightControl3 : UserControl
  2.     {
  3.         public SilverlightControl3()
  4.         {
  5.             InitializeComponent();

  6.             List<Item2> list = new List<Item2>();
  7.             list.Add(new Item2() { cjfy = 20, hospital_name = "Name", rc = 5, tcje = 50, tczb = 30, ybje = 40 });
  8.             c1DataGrid1.ItemsSource = list;
  9.         }
  10.     }

  11.     public class Item2
  12.     {
  13.         public string hospital_name
  14.         { get; set; }

  15.         public int rc
  16.         { get; set; }

  17.         public float cjfy
  18.         { get; set; }

  19.         public float ybje
  20.         { get; set; }

  21.         public float tcje
  22.         { get; set; }

  23.         public double tczb
  24.         { get; set; }
  25.     }
复制代码


运行结果:



我们得到不同的结果,应该是我们代码差异造成的, 如有需要你可以发一个完整的工程给我调试.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
jim_hujun
初级会员   /  发表于:2013-6-7 13:46:00
5#
回复 4楼dof的帖子

非常感谢耐心的解答
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-6-7 17:16:00
6#
不客气,你的问题解决了吗。
回复 使用道具 举报
jim_hujun
初级会员   /  发表于:2013-6-7 17:22:00
7#
回复 6楼dof的帖子

已经解决了:)
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-6-7 17:52:00
8#
好的,我先关闭该帖。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部