建议你不要用MOUSEDOWN这个事件,它取得的是上一次CELL的行数和列数。最好用CurrentCellChanged事件,下面代码你可以考去试试就知道了。private void dataGrid1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
MessageBox.Show(this.dataGrid1.CurrentCell.RowNumber.ToString());
MessageBox.Show(this.dataGrid1.CurrentCell.ColumnNumber.ToString());
}private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
{
System.Data.DataTable dtTable=new DataTable();
dtTable=(DataTable)this.dataGrid1.DataSource;
MessageBox.Show("ss");
int row=this.dataGrid1.CurrentCell.RowNumber;
int col=this.dataGrid1.CurrentCell.ColumnNumber;
MessageBox.Show(row.ToString());
MessageBox.Show(col.ToString());
MessageBox.Show(dtTable.Rows[row][col].ToString());//这就是你要取的值
}OK~
{
MessageBox.Show(this.dataGrid1.CurrentCell.RowNumber.ToString());
MessageBox.Show(this.dataGrid1.CurrentCell.ColumnNumber.ToString());
}private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
{
System.Data.DataTable dtTable=new DataTable();
dtTable=(DataTable)this.dataGrid1.DataSource;
MessageBox.Show("ss");
int row=this.dataGrid1.CurrentCell.RowNumber;
int col=this.dataGrid1.CurrentCell.ColumnNumber;
MessageBox.Show(row.ToString());
MessageBox.Show(col.ToString());
MessageBox.Show(dtTable.Rows[row][col].ToString());//这就是你要取的值
}OK~
而且取数据是从DataGrid的数据源中去取。
如果没有引入:则用
dtTable=(System.Data.DataTable)this.dataGrid1.DataSource还有,你的dataGrid1的数据源在最初时指定没有?比如:
private void Form2_Load(object sender, System.EventArgs e)
{
this.sqlDataAdapter1.Fill(this.dataSet1);
this.dataGrid1.DataSource = this.dataSet1.Tables[0];
}
如果没有引入:则用
dtTable=(System.Data.DataTable)this.dataGrid1.DataSource还有,你的dataGrid1的数据源在最初时指定没有?比如:
private void Form2_Load(object sender, System.EventArgs e)
{
this.sqlDataAdapter1.Fill(this.dataSet1);
this.dataGrid1.DataSource = this.dataSet1.Tables[0];
}
如果你有兴趣操作DATAVIEW,那么在Form2_Load里面可以为它指定:this.dtv=new DataView(this.dataSet1.Tables[0]);
this.dataGrid1.DataSource = dtv;当然要先申明dtv:
private System.Data.DataView dtv
这样的话在grid里面只显示tablename这一张表
this.dataGrid1.DataSource=this.dataset1;
这样datagrid以树的形式显示dtaset1里面所有的表
DataSource支持的类型很多,dataset,dataview,datatable,找找msdn,介绍很详细
da.fill(DataSet1,"abcd");
然后改变da的SelectCommand,再次使用fill()
da.fill(Dataset1,"efgh");
这里的"abcd"和"efgh"是两个表,就是上面贴子的tablename
调用的时候可以:dataset1.Tables["abcd"],也可以dataset1.Tables[0]