有时候WebGrid表格中列的数目比较多 ,若表格的宽度不足以显示所有列,当我们拉动左右滚动条就有可能看不见关键列。我们希望关键列不随着滚动条的移动而移动。
比如我们创建如下Table用来描述每个学生各个科目的成绩:
DataTable dt
=
new
DataTable();
dt.Columns.Add( " 姓名 " , typeof ( string ));
dt.Columns.Add( " 科目1 " , typeof ( double ));
dt.Columns.Add( " 科目2 " , typeof ( double ));
dt.Columns.Add( " 科目3 " , typeof ( double ));
dt.Columns.Add( " 科目4 " , typeof ( double ));
dt.Columns.Add( " 科目5 " , typeof ( double ));
dt.Columns.Add( " 科目6 " , typeof ( double ));
dt.Columns.Add( " 科目7 " , typeof ( double ));
dt.Columns.Add( " 姓名 " , typeof ( string ));
dt.Columns.Add( " 科目1 " , typeof ( double ));
dt.Columns.Add( " 科目2 " , typeof ( double ));
dt.Columns.Add( " 科目3 " , typeof ( double ));
dt.Columns.Add( " 科目4 " , typeof ( double ));
dt.Columns.Add( " 科目5 " , typeof ( double ));
dt.Columns.Add( " 科目6 " , typeof ( double ));
dt.Columns.Add( " 科目7 " , typeof ( double ));
绑定WebGrid并设定宽度:
//
绑定表格
this .UltraWebGrid1.DataSource = dt;
this .UltraWebGrid1.DataBind();
// 设置表格宽度,明显小于各个列的总和
this .UltraWebGrid1.Width = new Unit( " 300px " );
this .UltraWebGrid1.Height = new Unit( " 300px " );
//“ 姓名”列应当为我们的关键列,我们希望始终看见它
this .UltraWebGrid1.Columns.FromKey( " 姓名 " ).Width = new Unit( " 100px " );
this .UltraWebGrid1.Columns.FromKey( " 科目1 " ).Width = new Unit( " 50px " );
this .UltraWebGrid1.Columns.FromKey( " 科目2 " ).Width = new Unit( " 50px " );
this .UltraWebGrid1.Columns.FromKey( " 科目3 " ).Width = new Unit( " 50px " );
this .UltraWebGrid1.Columns.FromKey( " 科目4 " ).Width = new Unit( " 50px " );
this .UltraWebGrid1.Columns.FromKey( " 科目5 " ).Width = new Unit( " 50px " );
this .UltraWebGrid1.Columns.FromKey( " 科目6 " ).Width = new Unit( " 50px " );
this .UltraWebGrid1.Columns.FromKey( " 科目7 " ).Width = new Unit( " 50px " );
this .UltraWebGrid1.DataSource = dt;
this .UltraWebGrid1.DataBind();
// 设置表格宽度,明显小于各个列的总和
this .UltraWebGrid1.Width = new Unit( " 300px " );
this .UltraWebGrid1.Height = new Unit( " 300px " );
//“ 姓名”列应当为我们的关键列,我们希望始终看见它
this .UltraWebGrid1.Columns.FromKey( " 姓名 " ).Width = new Unit( " 100px " );
this .UltraWebGrid1.Columns.FromKey( " 科目1 " ).Width = new Unit( " 50px " );
this .UltraWebGrid1.Columns.FromKey( " 科目2 " ).Width = new Unit( " 50px " );
this .UltraWebGrid1.Columns.FromKey( " 科目3 " ).Width = new Unit( " 50px " );
this .UltraWebGrid1.Columns.FromKey( " 科目4 " ).Width = new Unit( " 50px " );
this .UltraWebGrid1.Columns.FromKey( " 科目5 " ).Width = new Unit( " 50px " );
this .UltraWebGrid1.Columns.FromKey( " 科目6 " ).Width = new Unit( " 50px " );
this .UltraWebGrid1.Columns.FromKey( " 科目7 " ).Width = new Unit( " 50px " );
这时我们运行程序,会看到它长的是这样的(老道我选择了一个样式,现在没有添加数据)
若想看到后面科目4~科目7就必须拉动滚动条,可这样我们就看不见姓名列,“这个得了100分的强人是谁啊?”,得,滚动条向左拉再慢慢找。
设置WebGrid的属性如下问题就解决了:
//
必须设定此属性为true.下面的Fixed的属性设定才有效
this .UltraWebGrid1.DisplayLayout.UseFixedHeaders = true ;
// 如果你不是在代码中设定此属性,而是在设计器的属性窗口中设定,那么你必须先将上面的UseFixedHeaders设置为true,否则此属性的true值是无法选定的
this .UltraWebGrid1.Columns.FromKey( " 姓名 " ).Header.Fixed = true ;
this .UltraWebGrid1.DisplayLayout.UseFixedHeaders = true ;
// 如果你不是在代码中设定此属性,而是在设计器的属性窗口中设定,那么你必须先将上面的UseFixedHeaders设置为true,否则此属性的true值是无法选定的
this .UltraWebGrid1.Columns.FromKey( " 姓名 " ).Header.Fixed = true ;
这样再向右拉动滚动条,“姓名”列也不会随着移动了。