首页 新闻 会员 周边 捐助

Jquery操作gridview的模板列

0
悬赏园豆:20 [已关闭问题]

我的gridview中有一列是模板列,其中包含一个<asp :button>,一个<asp:TextBox> ,还有一个<asp:Label>,现在我要的操作是点击这个button,使textbox中的值等于label的值。现在的问题是,我在页面中使用Jquery,获取button的CientID的时候,告诉我编译错误,说没有这个ID号的控件。我是这样写的,$("#<%=Button1.ClientID %>").click(.....);

这只是我写的一个例子,主要是看jquery怎么去操作gridview的模板列,没有想到,一开始就出问题了.....如果有高手知道如何解决的,请不吝赐教...

天堂口的主页 天堂口 | 小虾三级 | 园豆:514
提问于:2010-03-11 16:47
< >
分享
其他回答(1)
0

我的建议是写一个function(button),在button上添加onclick , function获得发生事件的button,根据button所在的位置用 .parent()  .next()之类的方法定位所要操作的label(生成后是span)

煤矿 | 园豆:205 (菜鸟二级) | 2010-03-11 17:26
0

刚刚我的回答是错误的,所以我删除了。现在继续回答,是这样子的一般直接在页面中可以直接获取到Button1.ClientID值,但是如果把Button放入GridView的模版中,这个值是没办法使用Button1.ClientID这样子来获取的。在C#代码中需要使用类似这样子的代码来获取 "Label控件的id=laid    ((Label)(e.Row.Cells[1].FindControl("laid"))).Text 即可得到结果"。所以页面中直接$("#<%=Button1.ClientID %>")这样子写是获取不到值的。

 我实现了个类似你要的功能。主要代码如下:

GridView的模板部分代码为

<ItemTemplate>
<label><%#Eval("UserName") %></label>
<asp:TextBox ID="TextBox1" runat="server" Text=""></asp:TextBox>
<input type="button" value="change" onclick="viper(this);" />
</ItemTemplate>

注意这里可以使用服务器端控件。

aspx页面中定义一个viper函数如下:

<script type="text/javascript">
var inp
= "", lab = "";
function viper(v) {
var p
= v.previousSibling;
if (p) {
var type
= parseInt(p.nodeType);
if (type == 3)
viper(p);
if (type == 1) {
if (p.nodeName == "INPUT")
inp
= p;
if (p.nodeName == "SPAN" || p.nodeName == "LABEL")
lab
= p;
}
if (typeof (inp) == "object" && typeof (lab) == "object") {
inp.value
= lab.innerHTML;
inp
= ""; lab = "";
}
else
viper(p);
}
}
</script>

 

引用的jQuery库为jquery-1.3.2.min.js 测试通过,如下图

如果以上还不能满足你的需求,可以给我留言我可以给你写个Demo

西越泽 | 园豆:10775 (专家六级) | 2010-03-11 18:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册