/// <summary>
/// 对dgSale控件的风格进行初始化
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
private DataGridTableStyle dtSaleStyle(DataTable dt)
{
DataGridTableStyle ts =new DataGridTableStyle();
DataGridTextBoxColumn aColumnTextColumn ;
DataGridBoolColumn aColumnBoolColumn;
ts.AllowSorting=false;
ts.MappingName = dt.TableName; int numCols = dt.Columns.Count;
int i=0; while (i < numCols) //重绘所有的列
{ if(i==10)
{
aColumnBoolColumn=new DataGridBoolColumn();
aColumnBoolColumn.AllowNull = false;
aColumnBoolColumn.MappingName = dt.Columns[i].ColumnName;
aColumnBoolColumn.HeaderText = dt.Rows[i][1].ToString();
aColumnBoolColumn.Width=int.Parse (dt.Rows[i][2].ToString());
aColumnBoolColumn.ReadOnly=false;
aColumnBoolColumn.TrueValue="1";
aColumnBoolColumn.FalseValue="0";
ts.GridColumnStyles.Add(aColumnBoolColumn);//'增加一种自定义的column风格
}
else
{
...... } i = (i + 1);
} return ts;
}
private void frmGoodsSale_Load(object sender, System.EventArgs e)
{
......
dgSale.DataSource=dt;
dgSale.TableStyles.Clear();
dgSale.TableStyles.Add(dtSaleStyle(dt)); }
可是这样做以后,虽然第10列是check列,但是,仍然有几个问题?
1、窗体加载后,check列是灰显,我必须点击两次后,才可以真正选择,如何解决?
2、当我选择完后,一离开check列后,就恢复灰显而且不管我是否打勾,它都一样打勾状态灰显??
3、不管我是否打勾,我用dgSale[0,10].toString()读出的值都是空,为什么?
能解答,请详细说明?谢谢!!
/// 对dgSale控件的风格进行初始化
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
private DataGridTableStyle dtSaleStyle(DataTable dt)
{
DataGridTableStyle ts =new DataGridTableStyle();
DataGridTextBoxColumn aColumnTextColumn ;
DataGridBoolColumn aColumnBoolColumn;
ts.AllowSorting=false;
ts.MappingName = dt.TableName; int numCols = dt.Columns.Count;
int i=0; while (i < numCols) //重绘所有的列
{ if(i==10)
{
aColumnBoolColumn=new DataGridBoolColumn();
aColumnBoolColumn.AllowNull = false;
aColumnBoolColumn.MappingName = dt.Columns[i].ColumnName;
aColumnBoolColumn.HeaderText = dt.Rows[i][1].ToString();
aColumnBoolColumn.Width=int.Parse (dt.Rows[i][2].ToString());
aColumnBoolColumn.ReadOnly=false;
aColumnBoolColumn.TrueValue="1";
aColumnBoolColumn.FalseValue="0";
ts.GridColumnStyles.Add(aColumnBoolColumn);//'增加一种自定义的column风格
}
else
{
...... } i = (i + 1);
} return ts;
}
private void frmGoodsSale_Load(object sender, System.EventArgs e)
{
......
dgSale.DataSource=dt;
dgSale.TableStyles.Clear();
dgSale.TableStyles.Add(dtSaleStyle(dt)); }
可是这样做以后,虽然第10列是check列,但是,仍然有几个问题?
1、窗体加载后,check列是灰显,我必须点击两次后,才可以真正选择,如何解决?
2、当我选择完后,一离开check列后,就恢复灰显而且不管我是否打勾,它都一样打勾状态灰显??
3、不管我是否打勾,我用dgSale[0,10].toString()读出的值都是空,为什么?
能解答,请详细说明?谢谢!!
private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(dataGrid1.DataSource == null)
return;
System.Windows.Forms.DataGrid.HitTestInfo htif = dataGrid1.HitTest(e.X,e.Y);
if(htif.Type != System.Windows.Forms.DataGrid.HitTestType.Cell)
return;
if(dataGrid1.CurrentCell.ColumnNumber != 10)
return;
DataView dv = (DataView)dataGrid1.DataSource;
string checkvalue = dv[htif.Row][10].ToString();
if(checkvalue.ToLower() == "false")
dv[htif.Row][10] = "true";
else
dv[htif.Row][10] = "false";
dv.Table.AcceptChanges();
}
if(addorupdate!=4)(4为查询)
aColumnBoolColumn.ReadOnly=false;
else
aColumnBoolColumn.ReadOnly=true;
可是,还是能点击此列,为什么?
if(dataGrid1.TableStyles[0].GridColumnStyles[10].ReadOnly == true)
return;