問題タブ [itemcommand]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
97 参照

c# - itemCommand DataGrid イベントが、グリッド コントロール内の項目を 2 回クリックしたときにのみ発生するのはなぜですか?

クリック イベントに応答する Web フォーム データグリッドに問題があります。説明させてください:

  1. ページが初めて読み込まれると、ユーザーが項目を選択するためのドロップダウンリストが表示されます。
  2. ユーザーがドロップダウンリストの項目を選択すると、データグリッド (tmdg と呼ばれる) が表示され (2 ページ目の読み込み)、ButtonColumns が含まれます。ユーザーがデータグリッドの ButtonColumns のいずれかでボタンを選択すると、ボタンの値が false から true に反転します (または、開始値に応じて true から false に反転します)。Page_Load イベントで、Page.IsPostBack==true の場合、次のようにイベント ハンドラーをデータグリッド (tmdg) に割り当てます。

  3. Tmdg_ItemCommand は、データテーブルと最終的にデータグリッド セル値を反転する Save() を呼び出すメソッドです。

これはすべて、データグリッドの非常に最初のクリックで機能します。ただし、その後のデータグリッドのクリックでは、button.DataTextField の値はグリッドの 2 回目のクリックでのみ反転します。(基本的に、シングルクリックではなく「ダブルクリック」)。私の目標は、クリック イベントごとに ButtonColumn のセルの値を反転することです。

注意: 値が正常に反転するグリッドを最初にクリックした後、セル (5,6) をクリックしても何も起こらない場合、セル (7,2) をクリックすると、そのセルが反転します (7 、2)。同様に、何も起こらないところで (5,2) をもう一度クリックし、(5,2) をもう一度選択して反転させることもできます。(これは、本質的に「ダブルクリック」の意味です)

その他の注意事項:

  1. 複数の場所でアプリケーション全体にイベント ハンドラーを割り当てようとしました (ページの OnInit で Page_Load の前、または UpdatePanel の Panel_Init メソッドで、または Page.IsPostBack が Page_Load であるかどうかに関係なく、または Page_Load の後)。

  2. datagrid は動的に読み込まれるコントロールで、Panel に配置されます。Panel は、UpdatePanel に配置されます。

ここに大量のコードを配置しないようにしますが、何かを提供したいと思います。簡潔にするために、少し編集しました。

::::Push.aspx::::

::::Push.aspx.cs::::

私には見えるように、BindGrid() の両方の「if」ステートメント内にブレークポイントを設定すると、最初の「if」がスキップされることが多く、その時点で Panel1 にデータグリッド tmdg が含まれていないことを意味します。この「if」は、無視される「最初のクリック」では明確にスキップされます。

私からの情報がさらに必要な場合はお知らせください。誰かが私が不適切にしていることを理解できることを願っています!! ありとあらゆるコメントをお待ちしております..