0

チェックボックスがチェックされ、サーバー側のチェックボックスがチェック済み = false と表示されている Gridview で問題に直面しています。

それは本当に奇妙で、私はまだ見たことがありません。

次のコードを書きました。

<script type="text/javascript">
        function SelectAll() {
            if ($('.SelectAll input:checkbox').attr("checked"))
                $('.chkTechs input:checkbox').attr("checked", true);
            else
                $('.chkTechs input:checkbox').attr("checked", false);
        }
        function SetCheckBoxes(item) {
            //$(item).attr("target").checked    // this is to find which element clicked
            if ($('.chkTechs input:checkbox').filter(":not(:checked)").length > 0) {
                $('.SelectAll input:checkbox').attr("checked", false)
            }
            else {
                $('.SelectAll input:checkbox').attr("checked", true)
            }

        }
    </script>

サーバー側 ボタンクリック

foreach (GridViewRow row in gvList.Rows)
            {
                CheckBox Checked = (CheckBox)row.FindControl("chkSelect");
                bool isChecked = ((CheckBox)row.FindControl("chkSelect")).Checked;
            }
4

2 に答える 2

1

サーバー コントロールの状態は で維持されviewstate、クライアント スクリプト ( ) でチェックボックスのチェック状態を変更するようなコントロールの状態の変更は、javascriptでは更新されませんviewstate。したがって、サーバー側でコントロールにアクセスすると、変更が取得されません。一部の変更を保存し、hidden fieldサーバー側でその非表示フィールドを使用してコントロールを更新する必要があります。これは、asp.net が を実装する方法viewstateです。

于 2013-01-01T07:34:46.247 に答える
0

対応するチェックボックスの Request.Form[xxx] パラメータの存在を確認して、値を取得する必要があります。あなたの場合[chkSelectXXX]。

1) チェックボックスの作成中に、意味のあるものをチェックボックスの ID に追加します。例: チェックボックスの ID が [chkSelect_PKValue1] になるように主キー val

2) サーバー側で Request.Form 変数をループし、chkSelect で始まるキー値を持つ変数の存在を確認します。このようなもの:

foreach(var x in Request.Form)
{
     if(x.StartsWith("chkSelect"))
     {
          //3. Then this checkbox is selected you should parse the 
          //PK value and do what's necessary.
     }
}
于 2013-01-03T22:26:45.767 に答える