如何获得c#dataGridView 选中行的主键?

wangjianwei2009 2010-01-17 06:09:35
我在做c# 程序的时候遇见一个这样的问题,当选中dataGridView中 我想获得选中行的主键,这样才能动态的把选中行的数据传到上面的文本框
http://b27.photo.store.qq.com/http_imgload.cgi?/rurl4_b=4e25f819f78237bcf63e2c40f8a729c12a19103320ad5c9db1ef9bb7a82cde9fd709ba671edb1c4e230fadc83f16f2ac52e3edf54cc4e5109300f161f7c9d753356d9c27f5b06b9c0d305a3aa4336fc34bd11ff3&a=30&b=27
...全文
1131 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
WTPMCheng 2010-01-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hhc123 的回复:]
DataTable dt = DataGridView1.DataSource;
                dt.PrimaryKey;
[/Quote]

这个应该不复杂,你把主键列也查询出来绑定在datagrid(也可以隐藏主键列,设置其visible属性就可以了)
然后:this.datagridview.Rows.["所选行"].Cells["主键列名或Index"].value;
就可以了。
灵雨飘零 2010-01-18
  • 打赏
  • 举报
回复
datagridview1.Rows[i].Cells["列名"].Value
dataGridView1.CurrentRow.Cells[""].Value
wangjianwei2009 2010-01-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hhc123 的回复:]
DataTable dt = DataGridView1.DataSource;
                dt.PrimaryKey;
[/Quote]大哥 有完整的代码吗?
zhangyumei 2010-01-18
  • 打赏
  • 举报
回复
设置GridView 的 DataKeyNames="你的主键字段"
在程序中取值:
GridView1.DataKeys[e.RowIndex][0].ToString()
namhyuk 2010-01-18
  • 打赏
  • 举报
回复
如果你不用‘数据源’这种方式,给你个完整的读取Northwind的Products的例子,用到BindingSource.Current.


public partial class Form1 : Form
{
private BindingSource bs;
private bool loaded = false;
private DataTable dt;
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = "database=northwind;uid=sa;pwd=;server=.";
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from Products";
conn.Open();
dt = new DataTable();
bs = new BindingSource();

dt.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection));
bs.DataSource = dt;
dataGridView1.DataSource = bs;
}
loaded = true;
}

private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
if (loaded)
{
DataRowView drv = bs.Current as DataRowView;
MessageBox.Show(drv["ProductID"].ToString());
}
}

}
ruanwei1987 2010-01-18
  • 打赏
  • 举报
回复
看不到图片也打不开网址, 你选中的话肯定有个事件啊 ,你在事件里面写不就行了

好像是这个GridViewRowEventArgs e
e.Rows.keys
这样吧
namhyuk 2010-01-18
  • 打赏
  • 举报
回复
如果DataGridView绑定的是强类型数据集,并且是通过BindingSource绑定的,
比如你是通过“数据源”-“添加数据源”把Northwind数据库的Categories表拖到Form上生成的DataGirdView, BidningSource, BindingNavigator等等,那么:

DataRowView drv = categoriesBindingSource.Current as DataRowView;
NorthwindDataSet.CategoriesRow row = drv.Row as NorthwindDataSet.CategoriesRow;
MessageBox.Show(row.CategoryID.ToString());


lsj_zrp 2010-01-18
  • 打赏
  • 举报
回复
dataGridView1.CurrentRow.Cells["主键"].Value
mzjmicrosoft 2010-01-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]
datagridview1.Rows[i].Cells["列名"].Value
dataGridView1.CurrentRow.Cells[""].Value
[/Quote]

正解
wuyq11 2010-01-17
  • 打赏
  • 举报
回复
datagridview1.Rows[i].Cells["列名"].Value
dataGridView1.CurrentRow.Cells[""].Value
hhc123 2010-01-17
  • 打赏
  • 举报
回复
DataTable dt = DataGridView1.DataSource;
dt.PrimaryKey;
wangjianwei2009 2010-01-17
  • 打赏
  • 举报
回复
这是图片 大家看看

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧