datagrid自動生成列

本文介绍了一个ASP.NET应用程序中如何实现数据绑定的过程。通过连接到SQL Server数据库并使用SqlDataAdapter填充DataSet,然后将数据展示在DataGrid控件中。此外,还演示了如何为DataGrid添加新的列。

後台創建列,如果前台已經編輯列,則先創建列在html列後,如果試系統自動生成列,則在生成列前。

None.gif    private void Page_Load(object sender, System.EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif            
// Put user code to initialize the page here
InBlock.gif
            if(!IsPostBack)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                SetBind();
ExpandedSubBlockEnd.gif            }

InBlock.gif
ExpandedBlockEnd.gif        }

None.gif
None.gif        
private void SetBind()
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif            SqlConnection conn
=new SqlConnection("server=(local);uid=sa;pwd=breakin;database=SDS");
InBlock.gif            SqlDataAdapter da
=new SqlDataAdapter("select * from [Dim.Buyer]",conn);
InBlock.gif            DataSet ds
=new DataSet();
InBlock.gif            da.Fill(ds,
"table1");
InBlock.gif
InBlock.gif
//             datatable dt=new dataTable() ;
InBlock.gif
//             DataRow tr;
InBlock.gif
//            for(int i=0;i<ds.Tables ["table1"].Columns .Count -1;i++)
InBlock.gif
//            {
InBlock.gif
//            dt.Columns.Add(new DataColumn["c" + i.ToString()]);
InBlock.gif
//            }
InBlock.gif

InBlock.gif
InBlock.gif            
this.DataGrid1.DataSource=ds.Tables["table1"];
InBlock.gif            
this.DataGrid1.DataBind();  
InBlock.gif            
this.DataGrid1 .Columns();
InBlock.gif
InBlock.gif
//            BoundColumn bc=new BoundColumn() ;
InBlock.gif
//            bc.HeaderText ="test";
InBlock.gif
//            bc.DataField ="buyer_code";
InBlock.gif
//            DataGrid1.Columns.Add(  bc  ); 
InBlock.gif
//
InBlock.gif
//            BoundColumn bc1=new BoundColumn() ;
InBlock.gif
//            bc1.HeaderText ="test2";
InBlock.gif
//            bc1.DataField ="buyer_code";
InBlock.gif
//            DataGrid1.Columns.Add(   bc1  );   
InBlock.gif

InBlock.gif         
this.DataGrid1.DataBind();  
InBlock.gif            
ExpandedBlockEnd.gif        }

None.gif
<think>好的,我需要帮助用户了解如何在WPF DataGrid中使用AutoGenerateColumns属性自动生成。首先,我得回顾一下用户提供的引用内容,特别是引用[1]和引用[2],因为这些直接提到了自动生成的方法。 用户提到他们直接将对象集合绑定到DataGrid,并设置AutoGenerateColumns为True。根据引用[1],这样做会根据对象的属性自动生成头是属性名。但用户可能需要示例代码,所以应该提供一个简单的XAML和C#示例,展示如何设置ItemsSource和启用AutoGenerateColumns。 接下来,用户可能想知道如何处理属性名是英文的情况,这时候需要中文头。引用[1]提到自动生成头是基于属性名称,如果属性是英文的,头也会显示英文。这时候可能需要通过自定义属性或者使用DisplayName属性来更改头,如引用[2]中提到的动态生成的方法。不过,如果用户想保持自动生成,同时修改头,可能需要使用DataAnnotations中的DisplayAttribute,例如在模型类中添加[Display(Name = "中文名")],这样DataGrid会自动使用这个DisplayName作为头。但需要确认是否需要额外设置,比如是否DataGrid默认支持这个特性,或者是否需要启用自动生成时的某些选项。 另外,引用[3]和[4]提到滚动条的处理,但用户的问题主要是关于自动生成,所以这部分可能暂时不需要涉及。不过,如果用户示例中包含了BeginningEdit事件或其他相关代码,可能需要解释这些部分是否影响自动生成的功能。 用户需要具体的步骤和示例,所以应该分步骤说明:首先如何在XAML中设置AutoGenerateColumns,然后如何绑定数据源,接着如何处理头中文显示的问题。可能还需要提到当需要自定义时,可以结合自动生成和手动定义,例如设置AutoGenerateColumns为True的同时添加自定义,但需要注意的顺序和可能的重复问题。 最后,生成相关问题时要考虑用户可能遇到的后续问题,比如性能优化、自定义自动生成的混合使用、动态更改等。根据引用[2],动态生成可能需要代码生成模板,所以相关问题可以涉及这些方面。 总结回答的结构:先介绍属性用法,给出XAML和C#示例,然后处理头本地化,再提供注意事项,最后相关问题。</think>### WPF DataGrid使用AutoGenerateColumns自动生成的方法 #### 1. 基础使用方法 在XAML中设置`AutoGenerateColumns="True"`,通过绑定对象集合自动生成: ```xml <DataGrid x:Name="dataGrid" AutoGenerateColumns="True"/> ``` 后台代码绑定数据源(C#): ```csharp public class Person { public string Name { get; set; } public int Age { get; set; } } // 绑定数据 dataGrid.ItemsSource = new List<Person> { new Person { Name = "张三", Age = 25 }, new Person { Name = "李四", Age = 30 } }; ``` 此时会自动生成头显示为`Name`和`Age`[^1]。 --- #### 2. 实现中文头 通过`DisplayNameAttribute`为属性添加中文名称: ```csharp using System.ComponentModel; public class Person { [DisplayName("姓名")] public string Name { get; set; } [DisplayName("年龄")] public int Age { get; set; } } ``` 无需修改XAML,DataGrid会自动读取`DisplayName`值作为头[^1]。 --- #### 3. 高级配置示例 混合自动生成与手动定义: ```xml <DataGrid AutoGenerateColumns="False"> <DataGrid.Columns> <!-- 手动定义第一 --> <DataGridTextColumn Header="自定义" Binding="{Binding Name}"/> </DataGrid.Columns> </DataGrid> ``` 设置`AutoGenerateColumns="True"`时手动定义的会出现在自动生成之后。 --- #### 4. 注意事项 - 性能影响:自动生成在数据量大时可能影响性能,建议分页加载[^2] - 类型适配:自动识别`bool`类型生成CheckBox,`DateTime`类型生成DatePicker - 覆盖控制:可通过`AutoGeneratingColumn`事件拦截修改属性: ```csharp dataGrid.AutoGeneratingColumn += (s, e) => { if (e.PropertyName == "Age") { e.Column.Header = "用户年龄"; } }; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值