0

LinkControl というカスタム コントロールがあります。

<asp:Panel runat="server">
<script language="javascript" type="text/javascript">
    function CheckImage() {
        var str = document.getElementById('<%=lblBookmarkId.ClientID%>').firstChild.nodeValue;
        PageMethods.CodebehindCheckImage(str);
        return false;
    }
</script>
<asp:Label runat="server" ID="lblBookmarkId" Style="visibility: hidden;" />
<asp:Button runat="server" ID="btnCheck" Text="Check" OnClientClick="return CheckImage();"                                        CausesValidation="false""/>
</asp:Panel>

そのコントロールはリピーター内のページ ブックマークで使用され、リピーター内に配置された各コントロールは lblBookmarkId.Text の異なる値を持ちます。

コードビハインド ページのブックマークには次の機能があります。

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static bool CodebehindCheckImage(string str)
{
   return true;
}

問題は、リピーター内のコントロールのボタン btnCheck を押すと、関数 CodebehindCheckImage でデバッグするときに、リピーターに存在する最後のコントロールに含まれる文字列 lblBookmarkId.Text を常に取得することです。

どんな提案でも大歓迎です。

よろしくヴォイチェフ

4

1 に答える 1

1

以下のようにjavascript関数を変更できます。

    function CheckImage(str) {
        PageMethods.CodebehindCheckImage(str);
        return false;

    }

&リピーターのコードを変更してonclientClickを添付します以下のように

<asp:Button runat="server" ID="btnCheck" Text="Check" 
 OnClientClick='<%# Eval("BookMarkText", "return CheckImage(\"{0}\");") >

ここで、「BookMarkText」はブックマークラベルでバインドしているものと同じです。したがって、非表示のブックマークラベルも使用する必要はありません。

于 2012-09-14T15:54:33.503 に答える