winform菜鸟求助,求高手解答~~~ 如何将datagridview中你选中的行里面的数据,反应到另一个页面相对应的各个控件中啊,我需要执行修改功能,但是就这个问题卡住了,新手前来求各位前辈帮助啊~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 选中的同时把数据保存到List<T>.另一个窗口读取就行,或者用把DATAGRIDVIEW传给另一个窗口,读取选中行的数据也可以 datarow dr =(this.datagridview1.currentrow .databounditem as datarowview ).row;this.textbox1.text=dr ["字段"].tostring() Form1 private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("a"); dt.Columns.Add("b"); DataRow dr = dt.NewRow(); dr["a"] = "123"; dr["b"] = "321"; dt.Rows.Add(dr); this.dataGridView1.DataSource = dt; } private void button1_Click(object sender, EventArgs e) { DataRowView drView = (DataRowView)this.dataGridView1.CurrentRow.DataBoundItem; DataRow dr = drView.Row; Form2 frm = new Form2(dr); frm.Show(); }Form2 public Form2(DataRow dr) { InitializeComponent(); this.textBox1.Text = dr["a"].ToString(); this.textBox2.Text = dr["b"].ToString(); } 关键是获得那一行里面的值,然后把这些值传到新form里就ok了。int rowindex = dataGridView1.CurrentCell.RowIndex;value1 = dataGridView1.Rows[rowindex].Cells[0].Value;...分别获得所有cell的值 把datagridviewrow 传递到新的窗体 再里面取相应的值就可以了。 Form2 frm = new Form2(dr);就是可以在另一个窗体里调用form2 我用你这种方法怎么报错啊,说是datarow受到保护,被限制,怎么解决- - 把datagridview的modifiers 的属性改成 public 试一下~~~ 不行啊,报出的是错误 1 “System.Data.DataRow.DataRow(System.Data.DataRowBuilder)”不可访问,因为它受保护级别限制 C:\Documents and Settings\ch\桌面\yfform\yfform\form\yuangong.cs 87 26 YFform这样的错误 方法比较多,可以用构造函数传值,还可以用url传值 就是写个项目的时候的数据库使用和调用,我数据库都是写好了的,调用也没问题,datagridview中我是点击直接选择的一行,我是想问怎么把我选择的这一行数据中的字段绑定到另一个页面的相对应的控件中,求个具体说明,谢谢啊 是什么架构的啊?如果是B/S的话你可以把你选中的那行数据放到Session里面去啊,然后再到另外一个页面获取如果是从数据库里面查询出来的话,你不怕浪费资源和麻烦的话,可以传一个ID过去,然后再查一次啊总之方法是很多的 子画面用bindsource 绑定dgv中显示的表,主画面然后通过传一个id过去,子画面用bindsource 进行一个id 筛选就行了 将每一个控件与bindsource绑定,不好意思忘说了 我觉得在gridview里面添加一列,"查看详细"进行连接页面把id传过去就行了!修改无非要id /// <summary> /// 显示详细内容 /// </summary> /// <param name="index"></param> private void ShowContents(int index) { if (index < 0) { return; } else { _saveFlag = false;//这个是用来标记此界面是新增还是修改的一个标记 this.txtOutletCode.Text = this.dgvOutlet.Rows[index].Cells["OutletCode"].Value.ToString(); this.ucHotelCodeSelector2.HotelCode = this.dgvOutlet.Rows[index].Cells["HotelCode"].Value.ToString(); this.txtOutletCnName.Text = this.dgvOutlet.Rows[index].Cells["OutletCnName"].Value == null ? "" : this.dgvOutlet.Rows[index].Cells["OutletCnName"].Value.ToString(); this.txtOutletEnName.Text = this.dgvOutlet.Rows[index].Cells["OutletEnName"].Value == null ? "" : this.dgvOutlet.Rows[index].Cells["OutletEnName"].Value.ToString(); this.txtOutletType.Text = this.dgvOutlet.Rows[index].Cells["OutletType"].Value == null ? "" : this.dgvOutlet.Rows[index].Cells["OutletType"].Value.ToString(); this.txtRes.Text = this.dgvOutlet.Rows[index].Cells["Res"].Value == null ? "" : this.dgvOutlet.Rows[index].Cells["Res"].Value.ToString(); this.txtConnectStr.Text = this.dgvOutlet.Rows[index].Cells["ConnectStr"].Value == null ? "" : this.dgvOutlet.Rows[index].Cells["ConnectStr"].Value.ToString(); } } 其中index的值是单击或双击datagridview时的e.RowIndex iwanghs你的代码是在同一个页面执行的吧,我这是2个不同的页面啊Greta你那种方法在winform上面行的通么,我记得那好像是ASP中的做法吧 有份DataGridView全面介绍文档不错可以看看 SerialPort串口相关问题 c# 使用odbc源调用存储过程 winform怎么实现登陆一个网站并抓取这个网站的数据 如何得到自己绘制图形的GraphicsStream C# CheckedListBox 添加值的问题 C#中 接口是干嘛用的?能给个简单的范例不? 请问datalist的width设置为96%的时候类似于align=center的属性怎么写啊 请问那位大侠有用C#写过支持断点传续的经验,链接,代码,请指点,谢谢了 一个有关无模式窗体的问题 超级问题,求方案 关于helpprvider控件SetHelpKeyword外联CHM文件的问题 C#读取固定格式文本文件插入数据库
或者用把DATAGRIDVIEW传给另一个窗口,读取选中行的数据也可以
this.textbox1.text=dr ["字段"].tostring()
{
DataTable dt = new DataTable();
dt.Columns.Add("a");
dt.Columns.Add("b"); DataRow dr = dt.NewRow();
dr["a"] = "123";
dr["b"] = "321";
dt.Rows.Add(dr); this.dataGridView1.DataSource = dt; } private void button1_Click(object sender, EventArgs e)
{
DataRowView drView = (DataRowView)this.dataGridView1.CurrentRow.DataBoundItem;
DataRow dr = drView.Row;
Form2 frm = new Form2(dr);
frm.Show();
}
Form2 public Form2(DataRow dr)
{
InitializeComponent(); this.textBox1.Text = dr["a"].ToString();
this.textBox2.Text = dr["b"].ToString(); }
int rowindex = dataGridView1.CurrentCell.RowIndex;
value1 = dataGridView1.Rows[rowindex].Cells[0].Value;
...
分别获得所有cell的值
就是可以在另一个窗体里调用form2
试一下~~~
错误 1 “System.Data.DataRow.DataRow(System.Data.DataRowBuilder)”不可访问,因为它受保护级别限制 C:\Documents and Settings\ch\桌面\yfform\yfform\form\yuangong.cs 87 26 YFform
这样的错误
如果是B/S的话你可以把你选中的那行数据放到Session里面去啊,然后再到另外一个页面获取
如果是从数据库里面查询出来的话,你不怕浪费资源和麻烦的话,可以传一个ID过去,然后再查一次啊
总之方法是很多的
/// <summary>
/// 显示详细内容
/// </summary>
/// <param name="index"></param>
private void ShowContents(int index)
{
if (index < 0)
{
return;
}
else
{
_saveFlag = false;//这个是用来标记此界面是新增还是修改的一个标记
this.txtOutletCode.Text = this.dgvOutlet.Rows[index].Cells["OutletCode"].Value.ToString();
this.ucHotelCodeSelector2.HotelCode = this.dgvOutlet.Rows[index].Cells["HotelCode"].Value.ToString();
this.txtOutletCnName.Text = this.dgvOutlet.Rows[index].Cells["OutletCnName"].Value == null ? "" : this.dgvOutlet.Rows[index].Cells["OutletCnName"].Value.ToString();
this.txtOutletEnName.Text = this.dgvOutlet.Rows[index].Cells["OutletEnName"].Value == null ? "" : this.dgvOutlet.Rows[index].Cells["OutletEnName"].Value.ToString();
this.txtOutletType.Text = this.dgvOutlet.Rows[index].Cells["OutletType"].Value == null ? "" : this.dgvOutlet.Rows[index].Cells["OutletType"].Value.ToString();
this.txtRes.Text = this.dgvOutlet.Rows[index].Cells["Res"].Value == null ? "" : this.dgvOutlet.Rows[index].Cells["Res"].Value.ToString();
this.txtConnectStr.Text = this.dgvOutlet.Rows[index].Cells["ConnectStr"].Value == null ? "" : this.dgvOutlet.Rows[index].Cells["ConnectStr"].Value.ToString();
}
}
Greta你那种方法在winform上面行的通么,我记得那好像是ASP中的做法吧