使用JavaScript访问Repeater值

时间:2011-12-01 14:03:59

标签: javascript .net repeater

我在NET上搜索了很多,以获得解决方案,但我找不到

有人能告诉我如何使用javascript访问转发器控件的标签和文本框值吗?

这是我的代码

 <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
    <ItemTemplate>
        <table id="t1" width="200px:" style="background-color: skyblue" runat="server">
            <tr>
                <td>
                    <asp:TextBox ID="TextBox3" Text='<%#DataBinder.Eval(Container.DataItem, "empid")%>'
                        runat="server" />
                    <asp:CheckBox ID="CheckBox1" runat="server" />
                    <asp:Label ID="Label1" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "empid")%>'></asp:Label>
                    <asp:Label ID="lblname" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "ename")%>'></asp:Label>
                    <br />
                    <br />
                </td>
            </tr>
        </table>
    </ItemTemplate>
</asp:Repeater>

现在我想使用javascript

访问转发器的标签,文本框

@Diodeus

我尝试了你的代码

function submitAll() {
        var thisLabel = $('.myLabel').eq(0);
        alert(thisLabel);
    }

但我的结果是警告

[object Object]

和@deostroll

我以这种方式尝试了你的代码

但没有得到任何东西

    function GetData() {
        var arrTables = document.getElementById('myDiv').getElementsByTagName('table');
        var tbl = arrTables[0];
        var td = tbl.childNodes[0].childNodes[0].childNodes[0];
        var txt = td.childNodes[0];
        alert(txt.value);        
    }

2 个答案:

答案 0 :(得分:2)

<asp:Label ID="Label1" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "empid")%>'></asp:Label>

ID必须是唯一的,因此您无法将相同的ID应用于转发器中的所有标签。改为使用CSS类名。

<asp:Label CssClass="myLabel" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "empid")%>'></asp:Label>

由于jQuery附带了.NET,因此您可以使用它而不是普通的JavaScript来更轻松地访问这些元素。

var thisLabel = $('.myLabel').eq(0)其中0是元素的索引,因为可以有很多。

答案 1 :(得分:0)

将转发器包含在带有一些id的div中,比如myDiv。

<div id="myDiv">
<!-- your repeater code -->
<asp:Repeater ID="Repeater1" runat="server"...>
<ItemTemplate>
<table>...</table>
</ItemTemplate>
</asp:Repeater>
</div>

做一个

var arrTables = document.getElementById('myDiv').getElementsByTagName('table');

现在arrTables只是div中所有表元素的数组。找到所需表格的序数:例如我是第一张桌子。

var tbl = arrTables[0];

找到表元素的相应 td

var td = tbl.childNodes[0].childNodes[0].childNodes[0];

以上内容可能因浏览器加载DOM和内容而异。因此,我说你调试并找到适合自己的。

获得 td 参考后:

var txt = td.childNodes[0];

这将给出文本框。 txt.nextSibling会给出标签......等等。