1

我有一个有 4 列的 DataGrid 控件(不是 GridView)。其中一列是 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 一直返回为空。

任何帮助将不胜感激。

谢谢你们。

山姆

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 回答