还想请假一个问题:如何设置DatagGrid中各列得宽度?

解决方案 »

  1.   

    第一个问题:你的DataGrid应该绑定数据源了吧,所以你在获得DataSet之前的SQL Table中加一列id.这样你新添加行时,如是指定行(如id=20)上方,则先update指定行及其后的所有行id=id+1,令insert行的id=20,再重新绑定即可.
    第二个问题:看看以下的例子即可.
    private void rbtnRefreshPg19_Click(object sender, System.EventArgs e)
    {
    try
    {
    ExecuteDBCommand.ExeDBCmd ExeDBSP=new ExecuteDBCommand.ExeDBCmd();
    DataSet ds=new DataSet();
    ds=ExeDBSP.ShowAssignPermInforByName(cmbQyEmpcodePg19.Text.Trim());
    DataGridTableStyle tableStyle = new DataGridTableStyle();
    //实现行与行见颜色交替:
    tableStyle.AlternatingBackColor = System.Drawing.Color.LightYellow;
    //如果不是"TableName",则不能实现选择整行的功能:
    tableStyle.MappingName = "TableName";
    //hide the column headers 
    tableStyle.ColumnHeadersVisible =true; 
    //change width of the row headers 
    tableStyle.RowHeaderWidth = 100;  
    int numCols = ds.Tables[0].Columns.Count;
    DataGridNoActiveCellColumn aColumnTextColumn;
    for(int i = 0; i < numCols; ++i)
    {
    aColumnTextColumn = new DataGridNoActiveCellColumn();
    aColumnTextColumn.HeaderText =ds.Tables[0].Columns[i].ColumnName;
    aColumnTextColumn.MappingName = ds.Tables[0].Columns[i].ColumnName;
    tableStyle.GridColumnStyles.Add(aColumnTextColumn);
    tableStyle.GridColumnStyles[i].Width = 45;
    }
    //某些列的宽度需特别设定.
    tableStyle.GridColumnStyles[0].Width = 80;
    tableStyle.GridColumnStyles[1].Width = 120;
    tableStyle.GridColumnStyles[6].Width = 220;
    tableStyle.GridColumnStyles[7].Width = 0;
    tableStyle.GridColumnStyles[8].Width = 0;
    // make the dataGrid use our new tablestyle and bind it to our table
    dtgridRightInforPg19.TableStyles.Clear();
    dtgridRightInforPg19.TableStyles.Add(tableStyle);
    dtgridRightInforPg19.DataSource = ds.Tables[0].DefaultView; 
    }
    catch(Exception ex)
    {
    dtgridRightInforPg19.DataSource=null;
    ex.ToString();
    }
    }