我有一个有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。
非常感谢任何帮助。
谢谢大家。
萨姆
答案 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;
}