1

4 つの列を持つ DataGrid コントロール (GridView ではない) があります。列の 1 つは DropDownList です。私がやろうとしているのは、dgTicket_ItemDataBound(.....) プロセスから DropDownList コントロールにアクセスすることですが、成功していません。

私はいくつかの異なる方法を調査して試しましたが、成功しませんでした。

これは私が持っているものです:

protected void dgPrintTicket_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
      string SQL1 = @"SELECT Machine_Id FROM SFD00006 WHERE WC_Id = '" + wc + "'";

      DropDownList ddl = (DropDownList)e.Item.Cells[2].FindControl("ddlMachId");

      string val = ((DropDownList)dgPrintTicket.SelectedItem.Cells[2].FindControl("ddlMachId")).Text;

      if (ddl != null)
      {                    
          ddl.DataSource = Lib.getArrayList(SQL1);
          ddl.SelectedValue = val;
          ddl.DataBind();
      }
}

DropDownList にアクセスして、select ステートメントから取得したすべてのマシン コードを入力したいのですが、ddl が null として返され続けます。

どんな助けでも大歓迎です。

皆さん、ありがとうございました。

サム

4

1 に答える 1

0

コントロールを見つける再帰的な方法を使用できます。

これが私がそれを行う方法です:

  Control FindControlRecursive(Control root, string name) {
      if (root.Name == name) {
         return base;
      }
      for (int i = 0; i < root.Controls.Count; ++i) {
           Control current = root.Controls[i];
           if (current.Name == name) {
               return current ;
           }
           else {
               Control recursiveControl = FindControlRecursive(current, name);
               if (recursiveControl != null)
               {
                    return recursiveControl;
               }
           }
      }
      return null;
  }
于 2013-10-16T16:33:50.913 に答える