注册 登录
编程论坛 ASP.NET技术论坛

[请教]GridView双击或单击某一行时行内容显示到另一页面的textbox[已基本解决]

xianzhenfly 发布于 2007-08-27 10:08, 2528 次点击
一.怎样实现"c#GridView双击或单击某一行时行内容显示到另一页面的textbox
并可以修改到数据库",
或者哪位高手有解决"GridView自带修改功能,字段有十几个时,可以在textbox里修改,但界面太宽不好看,不方便"的问题.



哪位帮帮忙,我是新手.
谢谢!

[此贴子已经被作者于2007-9-4 15:53:11编辑过]

19 回复
#2
冰彩虹2007-08-27 22:26

第一个问题参考这个看看,也许能帮上点忙
https://bbs.bc-cn.net/viewthread.php?tid=160999&star=at#


第二个问题:trim是你自定义的一个方法吧,它的访问级别应该设置成public吧,而且注意trim的参数个数及类型

#3
刘小芳2007-08-28 08:15

把gridview的选择控键找出来,然后写上代码OK

#4
xianzhenfly2007-08-28 08:24
回复:(刘小芳)把gridview的选择控键找出来,然后写...
先谢谢了!能不能说的详细一些,怎么才能把单击的GridView里的内容绑到另外一个窗体的TextBox里面那,然后我能从TextBox 里修改,能返回给数据库。如果可以给点代码。
#5
刘小芳2007-08-28 08:44
protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
GridViewRow gvr = this.GridView1.Rows[e.NewSelectedIndex];
this.txt_xm.Text = gvr.Cells[2].Text;
this.txt_dl.Text = gvr.Cells[4].Text;
this.txt_mm.Text = gvr.Cells[5].Text;
}

这是显示


提交者是写更新数据库语句,在最后where添加一个条件where userid = " + int.Parse(GridView1.Rows[GridView1.SelectedIndex].Cells[3].Text);
这表示修改当前所选择行的记录
#6
刘小芳2007-08-28 08:45
当然你先还得在gridview中把选择控件拖出来哦
#7
xianzhenfly2007-08-28 09:04
回复:(冰彩虹)第一个问题参考这个看看,也许能帮上...
谢谢!Trim是系统自带的。你只要告诉我前台绑定的方法就可以了。比如说绑定到TextBox,在前台的代码是什么样的?
#8
xianzhenfly2007-08-28 09:08
回复:(刘小芳)当然你先还得在gridview中把选择控件...
谢谢!我再试试。图像很漂亮,不知道是不是你本人。
#9
xianzhenfly2007-08-28 09:19
回复:(刘小芳) protected void GridView1_Selec...
这是在同一个页面下的操作吧。如果要在另外一页面的Textbox中显示那?
不好意思,再次麻烦。
#10
刘小芳2007-08-28 09:22
你想同时打开2个页面?
#11
xianzhenfly2007-08-28 09:30

I try again!

I am a new man!

#12
xianzhenfly2007-08-28 09:33
回复:(刘小芳)[em03]你想同时打开2个页面?

不是,我想通过双击或单击GridView之后,里面的内容显示在
另一个页面的TextBox里,因为字段较多,一个里面不好看
而且占的空间大。

#13
xianzhenfly2007-08-28 09:38
回复:(刘小芳)[em03]你想同时打开2个页面?
是双击GridView里的某一行,然后在另外一个页面里显示。谁有办法?
#14
梦灵儿2007-08-28 20:26

呵呵......是这样么?楼主
点击gridview的某一列,然后在把这行的数据反馈到另个页面的textbox里可撒!呵呵
要是这样的话.挺简单的 .
1:比如gridview上有个修改ButtonField,然后在gridview的事件里GridView1_RowCommand写,传值,一般传ID;
Response.Redirect("UpdateDescript.aspx?id=" + id);
2:在UpdateDescript页面里接收这个传过来的id:
int id = Convert.ToInt32(Request["id"]);
然后根据这个查询的ID值的结果反馈到textbox里.
比如:
this.texttitle.Text = dt.Rows[0]["infoName"].ToString();//显示的是主题名
this.vdate.Text = dt.Rows[0]["vdate"].ToString(); //显示查询数据库的时间
就这样就可以了......

#15
tahn306252007-08-28 20:58

在新开的第二个页面加入下面的代码试试!!!

后置代码中:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//单击
e.Row.Attributes.Add("onclick", "ReKey('" + e.Row.Cells[0].Text + "')");
//双击
//e.Row.Attributes.Add("ondblclick", "ReKey('" + e.Row.Cells[0].Text + "')");
}
}

前台代码:
<script language=javascript>
function ReKey(k)
{
window.opener.document.getElementById('控件名').value=k;
window.close();
}
</script>

#16
xianzhenfly2007-08-29 11:52
回复:(梦灵儿)呵呵......是这样么?楼主点击gridvie...
我主要的目的是为了能修改GridView里的内容.我想把一行里内容分别显示到另一个页面的textbox里或者 DropDownlist,然后做修改.
  你的想法给了我启发.我再试试.谢谢!
#17
梦灵儿2007-08-29 18:59

呵呵是一样的差不多的只是在接收值的时候要多判断几次而已。恩你自己试哈

#18
Liu0182007-09-03 18:34
想必是在显示页面传递一键值到另一页面显示并修改再返回主显示页面的吧。
#19
xianzhenfly2007-09-04 09:00
回复:(Liu018)想必是在显示页面传递一键值到另一页...
对呀!您做过吗?给点代码参考一下吧。谢谢了!
#20
zw3798688722007-09-04 14:12
要在另一个页面显示可以通过URL重写传值过去,而要改变文本框大小就直接在DataBind事件里写cell的大小就可以了,网上多得很例子,baidu一下哦
——周伟
——QQ:379868872
——Email:zw_asp.net@163.com
1