各位大哥,问个datagrid问题
在Form中我添加了一个datagrid,现在我想实现一个功能,就是点击datagrid中的某一列,然后把它相应的数据赋给底下的文本框中,在文本框中修改完以后可以提交修改。请各位指点一下。 问题点数:100、回复次数:9Top
1 楼jiezhi(风满袖)回复于 2006-03-09 15:54:04 得分 20
很简单.
你可以先得到其点击的行号,然后对应到绑定的DataTable,取得相应行的各个字段的内容----如果这个Datagrid没有排序的话.
更保险的做法,得到当前行中id(主键)行的cell的值,然后根据此值到绑定的DataTable中Select到行...
Top
2 楼zhangci226(三只熊熊)回复于 2006-03-09 16:02:25 得分 20
显示在textbox:
int i= this.dataGrid1.CurrentRowIndex;
this.TextBox1.Text = this.ds.Tables["表名"].Rows[i]["字段名"].ToString();
修改:
this.ds.Tables["表名"].Rows[i]["字段名"]="新值";
更新:
ad.Update(ds,"表名");Top
3 楼jiezhi(风满袖)回复于 2006-03-09 16:08:00 得分 0
比如:
private void myDataGrid_CurrentCellChanged(object sender, System.EventArgs e)
{
//设置主键
if(myDataTable.PrimaryKey == null || myDataTable.PrimaryKey.Length == 0)
myDataTable.PrimaryKey = new DataColumn[]{... // your id column};
//得到用户当前点击行的主键字段的值
string s = myDataGrid[myDataGrid.CurrentRowIndex,myDataTable.Columns.IndexOf(主键名)]).ToString();
//构造过滤条件,调用myDataTable.Select方法得到对应的行,然后把它相应的数据赋给底下的文本框中
myDataTable.Select("id='"+s+"'");
//....
}
Top
4 楼chenxi6713(番茄)回复于 2006-03-09 16:10:20 得分 15
就是点击datagrid中的某一列?
是不是某一行呀?
你最好是把更新需要用到的值放到datagrid中,这样更保险,如果不想让别人看到,可以将该行设置宽度设置为0。Top
5 楼jiffer(爱工作,更爱老婆)回复于 2006-03-09 16:44:40 得分 0
赋值我已经搞定了,可是我点击一个修改按钮后,怎样来获得我这个表中的主键呢,我这个主键没有从数据库中取出,主要是我不想让他先是出来。Top
6 楼wht6411(weblover|要毕业啦!HUST)回复于 2006-03-09 16:58:09 得分 20
赋值我已经搞定了,可是我点击一个修改按钮后,怎样来获得我这个表中的主键呢,我这个主键没有从数据库中取出,主要是我不想让他先是出来。
你可以把主键显示在某一列中,然后在datagrid的属性里面设置这一列为不可见就可以了.
然后再获取主键就好操作了.Top
7 楼jiffer(爱工作,更爱老婆)回复于 2006-03-09 17:05:50 得分 0
我的datagrid中的列是直接从Sql语句中固定的,比如sql="select aa,bb,cc from table"
我并没有在datagrid属性中添加列,不知道datagrid的哪个属性可以添加列,又怎样才能让他不自动绑定呢?我原来是写.net web程序的,在web的datagrid中还可以在属性生成器中添加列,可是到了winform中就不知道了,感觉到有很大的区别的。Top
8 楼canserly(没啥不好意思)回复于 2006-03-09 17:22:20 得分 20
DataColumn 列= null;
//B_LINECODE
列= new DataColumn();
列.DataType = System.Type.GetType ("System.String");
列.ColumnName = "B_LINECODE";
表.Columns.Add(列);
Top
9 楼mooddecode1980(心情解码)回复于 2006-03-09 17:41:52 得分 5
:)
-Top




