javascript怎么取得repeater里checkbox所在行的行号?

Animatrix 2008-01-29 07:05:13
如题:
一个repeater,每行里都有一个checkbox和一个textbox
怎么用javascript取得我要点击的checkbox的这一行的行号
使得checkbox可以操作textbox?
我是这样写的:
<asp:CheckBox runat="server" ID="cbxMale" onclick="setDisabled(<%# Container.ItemIndex%>)" />
但是这是错误的,会报错
怎么写才对呢?
关键就是那个参数,怎么写才好呢?怎么写才能取到该行的行号?
...全文
628 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
pattygao 2008-01-30
  • 打赏
  • 举报
回复
认真学习```
Animatrix 2008-01-30
  • 打赏
  • 举报
回复
非常感谢,我JS功力还差的远啊
天天做项目,也没时间停下来具体的研究下
看来得专门花时间系统的学习下了
wdzr_826 2008-01-29
  • 打赏
  • 举报
回复
楼上那个方法,虽不是最优方法,但是可行
xxoo2007 2008-01-29
  • 打赏
  • 举报
回复
checkbox给出不会和其他控件混淆的Name。 JS使用GetElemensByName 得到对象数组,检查那个checkbox是选中状态。 然后使用parentElement就能得到对应的TableCell对象。在parentElement一次就能得到TableRow对象了
一品梅 2008-01-29
  • 打赏
  • 举报
回复
相关参考代码:
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
e.Item.Attributes.Add("onclick","__doPostBack('"+((LinkButton)e.Item.Cells[4].Controls[0]).ClientID.Replace("__","$_")+"','')");
}
if(e.Item.ItemType==ListItemType.EditItem)
{
e.Item.Attributes.Add("ondblclick","__doPostBack('"+((LinkButton)e.Item.Cells[5].Controls[0]).ClientID.Replace("__","$_")+"','')");
for(int i=0;i<4;i++)((TextBox)e.Item.Cells[i].Controls[0]).Attributes.Add("onmouseover","this.select()");
}
}

强烈建议你看看lovecherry的文章,以及我博客中有关对_dopostback的介绍.
http://lovecherry.cnblogs.com/archive/2005/05/15/155831.html
http://blog.csdn.net/only_endure/archive/2007/11/22/1897200.aspx

一品梅 2008-01-29
  • 打赏
  • 举报
回复
我这个要求是在不刷新的情况下
点repeater里某一行的checkbox,该行后面的textbox的enable变成true/false
那么肯定不能在CS部分写了
----------------------------------查看_dopostback相关知识介绍,可以不刷新解决.
Animatrix 2008-01-29
  • 打赏
  • 举报
回复
一般的做法都是选好checkbox,最后提交时,在后台写迭代,判断每行checkbox状态,然后找到id号,

===================================================================

我这个要求是在不刷新的情况下
点repeater里某一行的checkbox,该行后面的textbox的enable变成true/false
那么肯定不能在CS部分写了
我自己试着写了个checkbox操作textbox,没问题
但是放到repeater里就有个行号的问题
不知道我这么说描述的清楚不。。。。
Animatrix 2008-01-29
  • 打赏
  • 举报
回复
做项目做的头痛的要四
思维是有点混乱了
====
明天再改这个问题
一解决马上给分
一品梅 2008-01-29
  • 打赏
  • 举报
回复
一般的做法都是选好checkbox,最后提交时,在后台写迭代,判断每行checkbox状态,然后找到id号,
一品梅 2008-01-29
  • 打赏
  • 举报
回复
还有,用javascript前台代码求后台控件行号有些麻烦,要用到_dopostback
为什么不在后台.CS中实现呢?
一品梅 2008-01-29
  • 打赏
  • 举报
回复
if(elems[i].type=="checkbox" && elems[i].checked){

elems[i].parentNode.parentNode.style.backgroundColor = "#FFCC00"; //cb.td.tr


}


一品梅 2008-01-29
  • 打赏
  • 举报
回复
ex:<td width="90" height="30"><%# DataBinder.Eval(Container.DataItem,"数字") %></td>


var elems = document.getElementById("<%= YourDatagrid.ClientID %>").getElementsByTagName("input");
for(var i=0;i<elems.length;i++){
if(elems[i].type=="checkbox")elems[i].checked = true;
}

一品梅 2008-01-29
  • 打赏
  • 举报
回复
楼主思维有些混乱.
Container.DataItem
数据项的命名容器:命名容器是一个对象引用,该对象即是计算表达式所针对的对象。如果绑定是针对列表控件(如Repeater、DataList或DataGrid)的,则命名容器将始终是Container.DataItem。如果绑定是针对页面的,则命名容器是Page。
<asp:CheckBox runat="server" ID="cbxMale" onclick="setDisabled(this)" />
Animatrix 2008-01-29
  • 打赏
  • 举报
回复
如果能得到这个参数
我就可以写javascript方法来控制这一行的textbox了
关键是这个参数怎么写

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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