使用javascript获取datalist中的超链接的id

时间:2012-08-10 08:56:37

标签: javascript jquery asp.net

我有一个datalist,里面有一个下拉列表和动态加载的超链接,意味着如果有一个用户那么会有一个下拉列表和一个超链接 有两个用户然后将有两个下拉列表和两个超链接。我的要求是当一个onchange事件发生在下拉列表中时,我希望在javascript中与该下拉列表相关联的超链接的ID。任何人都可以帮助我。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用Control.ClientIDMode属性

可能的值:

  • 自动识别
  • 静态
  • 继承(默认)
  • 可预测(用于数据绑定方案)这是您应该使用的值

示例:

<script type="text/javascript" src="Scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
    function ddlChanged(sender) {
        var senderID = $(sender).attr("id");
        var idSplitted = senderID.split("_");
        var currentHyperLinkID = "dl_hl_" + idSplitted[2];
        var currentHyperLink = $("#" + currentHyperLinkID);

        alert(currentHyperLink.text());
    }
</script>
    <asp:DataList runat="server" ID="dl" ClientIDMode="Predictable" DataSourceID="ods">
        <ItemTemplate>
            <asp:DropDownList runat="server" ID="ddl" onchange="ddlChanged(this);">
                <asp:ListItem Text="text1" />
                <asp:ListItem Text="text2" />
            </asp:DropDownList>
            <br />
            <asp:HyperLink NavigateUrl="http://www.google.com" runat="server" Text='<%# Eval("QuestionText") %>' ID="hl" />
        </ItemTemplate>
    </asp:DataList>

这将导致所有子控件将使用以下格式生成客户端ID:

            <select name="dl$ctl00$ddl" id="dl_ddl_0" onchange="ddlChanged(this);">
        <option value="text1">text1</option>
        <option value="text2">text2</option>

    </select>
            <br />
            <a id="dl_hl_0" href="http://www.google.com">QuestionText1</a>

例如:

dl_hl_0

其中:

  • dl DataList
  • 的名称
  • hl HyperLink控件的名称
  • ##。这将是为DataList内的所有绑定控件生成的唯一编号,每行中所有控件的编号相同

注意:您应该考虑使用ListView控件而不是DataList控件。后者是遗留控件,并没有ListView公开的所有特征。

例如,有一个名为ClientIDRowSuffix的属性,用于插入主键作为客户端ID的一部分。 DataList控件

中未提供此属性