通过Jquery在转发器中获取控件ID

时间:2011-06-16 23:01:15

标签: javascript jquery asp.net repeater

我有条目我想评论它们。所以我用TextBox和a创建了一个Repeater 里面的按钮。如何获取特定行的按钮和文本框的ID Jquery?

<ASP:REPEATER runat="server">
<ItemTemplate>

...
// Entries: bind data from DB

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

<asp:Button ID="Button1" runat="server" />  

</ItemTemplate>
</ASP:REPEATER>

谢谢。

2 个答案:

答案 0 :(得分:1)

你的重大问题是你的asp转发器控件会生成类似ct100_repeater_txt1的id,这不会帮助你获得与其相应的db行相关的注释

我发现完成此操作的常用方法(我认为这是一种非常标准的方法)是从数据库中分配带有行id的元素id,或者如果您无法控制id,则创建自定义属性。

我使用的伪代码看起来像这样:(我会尝试使它与语言/平台无关,这样你就可以学习这个概念,而不仅仅是语言)

<repeater template>
    <textbox id="txt1" dbid='<% eval database id>'/>
    <button id="btn1"  dbid='<% eval database id>'/>
</repeater template>

应生成如下代码:

<input type="textbox" value="" id="ct100_txt1" dbid="14" />
<input type="button value="submit" id="ct100_btn1" dbid="14" />

<input type="textbox" value="" id="ct100_txt2" dbid="12" />
<input type="button value="submit" id="ct100_btn2" dbid="12" />

<input type="textbox" value="" id="ct100_txt3" dbid="39" />
<input type="button value="submit" id="ct100_btn3" dbid="39" />

然后用你想要的任何语言,你可以从该属性中读取:

Button.Click{
   get attribute dbid of button clicked;
   save text of textbox of same dbid to a database;
}

许多欢呼声!希望适用于你

修改

回复评论“id在哪里保存dbid?!”我在数据库中假设:) 如何你应该保存它?有很多方法。这是你可以用jquery尝试的一个:

创建一个javascript函数来保存带参数的答案。将dbid绑定到控件时,将其绑定到onclick函数并将该id传递给该函数。然后,该函数获取dbid匹配的文本,并将注释和id保存到数据库中。

<textbox dbid="14" />
<input onclick="doStuff(14)" />
<script>
    function doStuff(var id){
        var comment = $('textbox[dbid=id]').value();
        ajax(your url and arguments);
    };
</script>

答案 1 :(得分:0)

如果没有更多信息,这是我能为您提供的最佳信息:

对于像这样的html(这就是asp.net将如何呈现你的按钮/文本框):

<div id="row1"><button type="button">Click Me!</button><input type="text" name="tb_info" /></div>
<div id="row2"><button type="button">Click Me again!</button><input type="text" name="tb_info" /></div>

您可以使用以下jQuery选择button and textbox for specific row

$("#row1 > button, #row1 > input")