1

多くの DetailsView-Controls があり、その可視性を単純な jQuery 関数で切り替えます。大まかな概要: ユーザーがリンク "PERSONAL" を押すと、"PERSONAL" の DetailsView を含む が表示され、他のすべての DetailsView<divs>が消えます。これらすべてのデフォルト状態<divs>は非表示です。

ここで、次の問題があります。ユーザーが DetailsView-Control の生成された EDIT ボタンを押すと、ページはポストバックを取得し、すべての div が再び非表示になります。

次の可能性が見えます (もっと見えるかもしれません):

  1. jQuery関数を変更して、sを明示的に非表示にする必要がある
  2. 編集ボタンを自動的に作成させずに、各 DV にカスタム ボタンを追加します (を使用'onclick=javascript: ...')。これは、「UPDATE」ボタンと「CANCEL」ボタンも追加する必要があることを意味します。
  3. 'onclick=javascript: ...'-property を既存の EDIT ボタンに追加する方法を見つける

もちろん、私は #3 を好むでしょう ;)、または誰かがより良いアイデアを持っているのでしょうか? #1の問題は、私のjQueryが「あまり良くない」ということです。#2の問題は、かなりの数のDVに対してこれらのボタン/機能を作成する必要があることです。

前もって感謝します!:)


編集; ちなみに、ここに私のを制御するjQueryスニペットがあります

<script type="text/javascript">
    function toggleVisibility(newSection) {

        $(".details_container").not("#" + newSection).hide();
        $("#" + newSection).show();
    }
</script>

制御するすべての div は、クラス「details_container」にあります。簡単に実行できる「this-is-my-active-div」のようなものを追加するコードが 2 行あるのではないでしょうか?

4

2 に答える 2

0

このボタンの aspx コードを提供できますか?

それが ImageButton InRowDataBoundイベントであると仮定します

 ((ImageButton)e.Row.Cells[0].Controls[0]).Attributes.add("onclick", "return YourFunction();");
于 2012-08-24T09:21:37.557 に答える
0

Div の表示と非表示のみを気にする必要がある場合は、どの div が表示されているかを知るためにグローバル変数を設定することをお勧めします。 )

編集ボタン クリック イベントで、変数値を設定します。つまり、2 番目の DetailsView の編集がクリックされた場合は、VisibleDivId=2 を設定します。

In Body Load 表示する Javascript 関数を呼び出して、Div を非表示にする

function ShowHide()
{

var DivId=<%=VisibleDivId %>
//Code to Show Hide Div.

}

それ以外 の場合は、編集イベントから Javascript 関数を呼び出すこともできます

Page.ClientScript.RegisterStartupScript(GetType(), "Key", "ShowHide();", true);
于 2012-08-24T09:28:43.390 に答える