1

私はデータリストを持っていて、その中に動的にロードされるドロップダウンリストとハイパーリンクがあります。つまり、1人のユーザーがいる場合は1つのドロップダウンと1つのハイパーリンクがあり、2人のユーザーがいる場合は2つのドロップダウンと2つのハイパーリンクがあります。ドロップダウンでonchangeイベントが発生した場合、javascriptでそのドロップダウンに関連付けられたハイパーリンクのIDが必要です。誰か助けてください。

ありがとう

4

1 に答える 1

0

Control.ClientIDMode物件をご利用いただけます

可能な値:

  • AutoID
  • 静的
  • 継承 (デフォルト)
  • 予測可能 (データ バインドされたシナリオで使用) これは、使用する必要がある値です。

例:

<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

どこ:

  • dlDataList
  • hlHyperLinkコントロールの名前です
  • ##。これは、 内のすべてのバインドされたコントロールに対して生成される一意の番号でありDataList、各行のすべてのコントロールに対して同じ番号です。

注:ListViewコントロールの代わりにコントロールを使用することを検討する必要がありDataListます。後者は従来のコントロールであり、 によって公開されるすべての特性を備えているわけではありませんListView

たとえば、次のプロパティがありClientIDRowSuffixます。これは、クライアント ID の一部として主キーを挿入するために使用されます。このプロパティはDataListコントロールでは使用できません

于 2012-08-10T09:41:21.653 に答える