如何在DataGrid中访问我的下拉列表控件?

时间:2013-10-16 16:28:58

标签: c# asp.net drop-down-menu datagrid

我有一个有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一直返回为null。

非常感谢任何帮助。

谢谢大家。

萨姆

1 个答案:

答案 0 :(得分: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;
  }