C# Windows Mobile 5.0数据网格列大小

C# Windows Mobile 5.0数据网格列大小,c#,datagridview,windows-mobile,C#,Datagridview,Windows Mobile,所以我为一家使用PDA设备的公司的仓库工人建立了一个小程序。 它有windows mobile操作系统5.0 如图所示,“说明”和“代码”列的大小相同。我知道这是一项古老的技术,但我的经理坚持在加载时将“描述”列加宽(我们可以在加载后手动将其加宽) 我已经写了这段代码 DataGridTableStyle ts = new DataGridTableStyle(); DataGridTextBoxColumn cs = new DataGridTextBoxColumn();

所以我为一家使用PDA设备的公司的仓库工人建立了一个小程序。

它有windows mobile操作系统5.0 如图所示,“说明”和“代码”列的大小相同。我知道这是一项古老的技术,但我的经理坚持在加载时将“描述”列加宽(我们可以在加载后手动将其加宽)

我已经写了这段代码

    DataGridTableStyle ts = new DataGridTableStyle();
    DataGridTextBoxColumn cs = new DataGridTextBoxColumn();

    cs = new DataGridTextBoxColumn();
    cs.MappingName = "Desc";
    cs.HeaderText = "description";

    cs.Width = 150;
    ts.GridColumnStyles.Add(cs);

    cs = new DataGridTextBoxColumn();
    cs.MappingName = "Code";
    cs.HeaderText = "code";
    cs.Width = 50;
    ts.GridColumnStyles.Add(cs);


    cs = new DataGridTextBoxColumn();
    cs.MappingName = "barcode";
    cs.HeaderText = "barcode";
    cs.Width = 90;
    ts.GridColumnStyles.Add(cs);

    DgView.TableStyles.Clear();  //DgView is the Datagrid
    DgView.TableStyles.Add(ts);

            DgView.DataSource = AllKinds.AsEnumerable().
              OrderBy(x => x.Field<string>("Desc")).
              Select(p => new
              {
                  Description = p.Field<string>("Desc").Trim(),
                  Code = p.Field<string>("Code").Trim()
              }).ToList();
DataGridTableStyle ts=newDataGridTableStyle();
DataGridTextBoxColumn cs=新的DataGridTextBoxColumn();
cs=新的DataGridTextBoxColumn();
cs.MappingName=“Desc”;
cs.HeaderText=“说明”;
cs.宽度=150;
ts.GridColumnStyles.Add(cs);
cs=新的DataGridTextBoxColumn();
cs.MappingName=“代码”;
cs.HeaderText=“代码”;
cs.宽度=50;
ts.GridColumnStyles.Add(cs);
cs=新的DataGridTextBoxColumn();
cs.MappingName=“条形码”;
cs.HeaderText=“条形码”;
cs.宽度=90;
ts.GridColumnStyles.Add(cs);
DgView.TableStyles.Clear()//DgView是数据网格
DgView.TableStyles.Add(ts);
DgView.DataSource=AllKinds.AsEnumerable()。
OrderBy(x=>x.Field(“Desc”))。
选择(p=>new
{
Description=p.Field(“Desc”).Trim(),
代码=p.字段(“代码”).Trim()
}).ToList();

缺少表样式映射名称,即要分配样式的表的名称:

    DataGridTableStyle ts = new DataGridTableStyle();
    //which table is to style
    ts.MappingName = "data[]";
在上面的代码中,我使用了一个数据对象数组。我不知道你的建筑用什么。见MSDN

在另一个奇怪的(彩色的,大量的图像)上,有人说: “我可以使用BindingSource.GetListName(null)获取匿名类型的字符串表示形式。” 和 “tableStyle.MappingName=dgCustom.DataSource.GetType().Name;”


数据网格可以有多个数据源,通常是数据表。每个表样式定义一个表的样式,并在其中定义列的样式。TableStyle.Mapping属性定义样式表关系。

在设置DgView.DataSource后,尝试设置DgView样式。根据映射仔细检查DgView内容。顺便说一句:屏幕截图显示的是运行Windows嵌入式手持设备6.5而不是Windows Mobile 5的设备!哦,对不起,在我的项目中,它是放在WindowsMobile 5上的。我试过你说的,但当它加载时,列的大小都是一样的。分配肯定有问题。查看列标题,即使它们未应用。你的标题样式是“代码”和“描述”,但标题显示的是“代码”和“描述”。是的,我知道。标题文本获取选择属性的名称。我将映射名称与select中的名称相同,它仍然没有映射。我尝试了您提到的一些方法,但仍然不起作用。我的列表叫做“Allkinds”,Datagrid叫做“DgView”,你能给我一个代码吗。标题文本获取select语句的属性名称。这就像我做所有的样式都是徒劳的。ts.MappingName=DgView.DataSource.GetType().Name;在数据填充之后应该可以工作。否则,您需要向帖子提供您的各种数据。