问题如下:
1\如何取得列的序号 如:想得到列字段为“AA”的序号,即是第几列?
2\怎样控制列的宽度和行的高度 (用编程实现)
 如:设定每行为统一高度,每列为统一宽度 ,单元格内数据显示不下时不换行。
3、怎样实现列宽可以自动拉伸谢谢!

解决方案 »

  1.   

    1.
    private int GetColumnOrder(string columnName)
    {
    DataRow dr=this.DataGrid1.DataSource as DataRow;
    for(int i=0;i<dr.Table.Columns.Count;i++)
    {
    if(dr.Table.Columns[i].ColumnName==columnName)
    {
    return i;
    }
    }
    }
      

  2.   

    2.private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemIndex>0)
    {
    e.Item.Height=Unit.Pixel(100);
    }
    }
      

  3.   

    1 http://blog.csdn.net/21aspnet/archive/2004/10/24/149762.aspx
    2 http://dotnet.aspx.cc/ShowDetail.aspx?id=B3F3462D-DC34-41CE-9FEE-6965B2A3D1AD
    3 http://dotnet.aspx.cc/ShowDetail.aspx?id=00C78024-5C08-4F3F-BCA8-AB3C0B330A12
      http://dotnet.aspx.cc/ShowDetail.aspx?id=E5254FD8-252F-457C-F61E-32EE353E8BF2
      

  4.   

    3.XP 风格的可拖动列、可排序、可改变宽度的DataGrid的例子
    http://61.177.238.6/test/UGrid/
      

  5.   

    谢谢 vivianfdlpw
    顺便问一下:我用的是动态列名影射 如“num”影射为“编号”
    现在我想找到“num”的列序号,如何实现;
    附影射代码
    private void dodatamappings(DataAdapter da)
    {DataColumnMapping[] dcmmappedcolumns;
    dcmmappedcolumns = new DataColumnMapping[_showfieldmean.GetUpperBound(0)+1];

    for(int i=0;i<_showfieldmean.GetUpperBound(0)+1;i++)
    {
    dcmmappedcolumns[i]=new DataColumnMapping(_sfield[i],_showfieldmean[i]);
    }
    DataTableMapping dt=new DataTableMapping("Table","ds",dcmmappedcolumns);
    da.TableMappings.Add(dt);
    da.MissingMappingAction=MissingMappingAction.Ignore;
    }注:_sfield[i] 为数据库字段,_showfieldmean[i]为字段显示名
      

  6.   

    第一个写错了,DataRow应改为DataViewprivate int GetColumnOrder(string columnName)
    {
    DataView dv=this.DataGrid1.DataSource as DataView;

    for(int i=0;i<dv.Table.Columns.Count;i++)
    {
    if(dv.Table.Columns[i].ColumnName==columnName)
    {
    return i;
    }
    }
    }
      

  7.   

    你可以把你的映射关系保存在Session中,然后根据源列名获取映射后的列名,然后获取其顺序号