//myda=new SqlDataAdapter("select * from 学生情况表 where substring(姓名,1,1)='朱'",mycnn); myda=new SqlDataAdapter("select * from 学生情况表",mycnn); myda.TableMappings.Add("table","info"); myda.TableMappings["table"].ColumnMappings.Add("姓名","name");
// fill data in dataset myds=new DataSet(); myda.Fill(myds,"table");
/// 设置所有列的最佳宽度.
/// </summary>
public void SetToFitWidth(string TableName)
{
DataGridColumnStyle dgcs;
for(int i =0 ; i < this.TableStyles[TableName ].GridColumnStyles; i ++ )
{
dgcs.Width =GetFitWidth(i,dgcs.HeaderText,0 );
}
}
/// <summary>
/// 返回指定列的最适合宽度,记录范围是表格(DataGrid)中的所有行
/// </summary>
/// <param name="pColumn">一个列</param>
/// <param name="headerCaption">列的标题字符,如果不计算标题字符的宽度,则传入空字符</param>
/// <param name="MaxLimit">最宽限制为,缺省为1000</param>
/// <returns>列的最适合宽度</returns>
public int GetFitWidth(int col,string headerCaption ,int MaxLimit)
{
float width = 0;
if (MaxLimit==0) MaxLimit=1000;
int numRows = this.GetRowsCount ();
Graphics g = Graphics.FromHwnd(this.Handle);
StringFormat sf = new StringFormat(StringFormat.GenericTypographic);
SizeF stringSize = g.MeasureString(headerCaption, Font,MaxLimit); width=stringSize.Width ;
for(int i = 0; i < numRows; ++ i)
{
stringSize = g.MeasureString(this[i, col].ToString(), this.Font, MaxLimit, sf);
if(stringSize.Width > width)
width = stringSize.Width;
}
g.Dispose();
return (int) width + 8; // 8 is for leading and trailing padding
}
private DataSet myds=null;private SqlDataAdapter myda=null;
private DataGridTableStyle myts=null;
mycnn=new SqlConnection(@"server=zhurongj;database=学生管理数据库;uid=dazhu2;pwd=32012");
try
{
mycnn.Open();
//myda=new SqlDataAdapter("select * from 学生情况表 where substring(姓名,1,1)='朱'",mycnn); myda=new SqlDataAdapter("select * from 学生情况表",mycnn);
myda.TableMappings.Add("table","info");
myda.TableMappings["table"].ColumnMappings.Add("姓名","name");
// fill data in dataset
myds=new DataSet();
myda.Fill(myds,"table");
//close database
mycnn.Close(); DataTable mytable=myds.Tables["info"];
this.dataGrid1.SetDataBinding(myds,"info");
// create tablestyle
myts= new DataGridTableStyle(true);
//set mapping
myts.MappingName=myds.Tables[0].TableName;
//clear datagridtablestyle
this.dataGrid1.TableStyles.Clear();
//add datagridtablestyle
this.dataGrid1.TableStyles.Add(myts);
//将第一列宽度设置隐藏
myts.GridColumnStyles["学号"].Width=0;
会不会按Tab的时候,突然光标不见了? 会不会给用户在列头用鼠标又给拉出来了?上面的问题我没试过不知道,但下面的隐藏就不会
myts.GridColumnStyles["学号"].MappingName=""