2013-10-16 30 views
1

我有一個DataGrid控件(不是GridView),它有4列。其中一列是DropDownList。我想要做的是從我的dgTicket_ItemDataBound(.....)進程訪問DropDownList控件,但我沒有成功。如何在我的DataGrid中訪問我的下拉列表控件?

我研究並嘗試了幾種不同的方式,但沒有成功。

這是我有:

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不斷回來爲空填充它。

任何幫助將不勝感激。

謝謝大家。

山姆

+1

只是想附和,這是非常不安全的代碼,因爲它很容易讓SQL注入。 http://en.wikipedia.org/wiki/SQL_injection –

回答

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; 
    } 
+0

這是一個web應用程序不是窗體 – hmakled

+0

這個邏輯應該仍然適用,不是? –

+0

這是一個程序,我打電話,並傳遞一個變量?我不確定我明白這是在做什麼?參數'root'和'name'代表什麼? – hmakled

相關問題