0

ページ読み込みイベントでグリッドビュー内に動的にチェックボックスを追加しました。チェックされていないチェックボックスの値をデータベース内に保存したいのですが、動的に追加されたチェックボックスコントロールの値を取得していないため、常に null 値が返されます。

コードサンプル:

CheckBox chkQtyval1 = (CheckBox)gv.Rows[index].Cells[i].FindControl("chkCheckBox");

null値を返しています。

背後にあるコード:

前もって感謝します

4

1 に答える 1

0

動的に追加された各チェックボックスには、自動割り当てされた ID があります。

したがって、チェックボックスを追加するときに for ループを想定すると....チェックボックスを作成するときに、.ClientID = x; を追加します。

次に、コントロールを取得したいときに使用します

CheckBox chkbox = (CheckBox)Use Gridview.Findcontrol(x);
if(chkbox!=null)
{
//Do Something
}

「x」は、作成時にチェックボックス ID に割り当てられた値です。

注: 検索コントロールは不安定になる可能性があるため、ここでは一致するものが見つかるまでコントロール ツリー全体 (またはその一部) をループすることによって機能するものを使用します。

public Static Control FindControlRecursive(Control root, string id)
{
      if (root.ID == id)
    {
    return root;
    }

      foreach (Control c in root.Controls)
    {
    Control t = FindControlRecursive(c, id);
    if (t != null)
      {
       return t;
      }
    }

    return null;
}

コントロール ルートは、ページ、マスター、またはコントロール (GridView など) にすることができます。

2番目の注意:これは静的としてマークされているため、Class.FindControlRecursive()として使用するか、静的参照を完全に削除して単一ページでのみ使用します

于 2013-09-13T11:55:40.543 に答える