dataGrid的当前行问题
主 题: dataGrid的当前行问题
作 者: xshmeng (爽爽)
等 级: ^
信 誉 值: 100
所属论坛: .NET技术 C#
问题点数: 80
回复次数: 11
发表时间: 2003-8-26 14:48:28
各位老哥,请问一下我把dataGrid连到DataSet的一个DataTable以后,如何取出当前行(当前光标所在的行)的DataRow对象来?
回复人: wd_318(饭加加) ( 五级(中级)) 信誉:100 2003-8-26 15:00:05 得分:60
DataRow dr;
BindingManagerBase bm = openner.dataGrid1.BindingContext[dataGrid1.DataSource, dataGrid1.DataMember];
dr = ((DataRowView)bm.Current).Row;
MessageBox.show(dr["字段名"].ToString());
回复人: yaoyaonet(绿洲) ( 四级(中级)) 信誉:100 2003-8-26 15:06:54 得分:4
ds.Tables[0].Rows[this.BindingContext[ds,"Table"].Position][字段名].ToString();
回复人: greenhill1(小山) ( 三级(初级)) 信誉:100 2003-8-26 15:56:58 得分:4
private void button1_Click(object sender, System.EventArgs e)
{
if ((this.BindingContext[this.thisDataSet, "班级"].Count > 0))
{
SqlConnection thisConnection = new SqlConnection(@"Data Source=SERVER;User ID=sa;Password=;Initial Catalog=dx");
thisConnection.Open();
SqlDataAdapter thisAdapter = new SqlDataAdapter("SELECT * FROM 班级", thisConnection);
SqlCommandBuilder thisBuilder = new SqlCommandBuilder(thisAdapter);
DataSet thisDataSet = new DataSet();
thisAdapter.Fill(thisDataSet, "班级");
DataRow findRow = thisDataSet.Tables["班级"].Rows[CellNu];
findRow.Delete();
thisAdapter.Update(thisDataSet, "班级");
thisConnection.Close();
}
else
{
MessageBox.Show("没有班级可以删除!");
}
}
private void grd班级_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
Point pt = new Point(e.X, e.Y);
DataGrid.HitTestInfo hit = grd班级.HitTest(pt);
if (hit.Type == DataGrid.HitTestType.Cell)
{
grd班级.Select(hit.Row);
}
CellNu = grd班级.CurrentCell.RowNumber;
}
以上是用鼠标点击某行,然后选中datagrid的某行,然后点击"删除"将你点击的那条记录删除的代码。看看有没有你想要的功能!CellNu=grd班级.CurrentCell.RowNumber这一句获得了你选择的那行的位置。
回复人: greenhill1(小山) ( 三级(初级)) 信誉:100 2003-8-26 16:02:26 得分:4
this.BindingContext[this.thisDataSet,"学生"].Position
这个是获得当前行的行号。比如datagrid的第一行,这个代码则返回0,第二行,返回1。
回复人: superzuoluo(球星) ( 四级(中级)) 信誉:100 2003-8-26 16:04:27 得分:4
这个简单
((DataTable)dataGrid1.DataSource).Rows[dataGrid1.CurrentRowIndex]
回复人: wjohenw(CSharp) ( 二级(初级)) 信誉:100 2003-8-26 16:29:32 得分:2
呵呵,都这么快
回复人: xshmeng(爽爽) ( 一级(初级)) 信誉:100 2003-8-26 16:32:06 得分:0
不可,我感觉DataTable和DataGrid的索引方式不同,所以不用用Rows[int i]这种方式,因为一旦将表格按别的列排一下序,这种方式就不行了。
回复人: greenhill1(小山) ( 三级(初级)) 信誉:100 2003-8-26 16:37:32 得分:2
可以排序后根据字段信息来查找啊。
回复人: wd_318(饭加加) ( 五级(中级)) 信誉:100 2003-8-26 16:48:06 得分:0
老大,我那段程序是不怕重新排序的呀,
原来我以为这事,在网上找了一星期才找到的方法!
回复人: wd_318(饭加加) ( 五级(中级)) 信誉:100 2003-8-26 16:51:20 得分:0
晕,原来我没改好,还是用多了openner!(我原来是用来操作别的窗口数据的,呵)
DataRow dr;
BindingManagerBase bm = dataGrid1.BindingContext[dataGrid1.DataSource, dataGrid1.DataMember];
dr = ((DataRowView)bm.Current).Row;
MessageBox.show(dr["字段名"].ToString());
回复人: xshmeng(爽爽) ( 一级(初级)) 信誉:100 2003-8-26 16:54:52 得分:0
wd_318(饭加加) 老兄,你的办法没有问题,很好,我很高兴。感谢。望多光临。
该问题已经结贴 ,得分记录: wd_318 (60)、 yaoyaonet (4)、 greenhill1 (4)、 greenhill1 (4)、 superzuoluo (4)、 wjohenw (2)、 greenhill1 (2)、