2013-06-03 54 views
0

我想在網格視圖的EditItemTemplate上找到DropDownList控件,以便在它是繪製,但控制從來沒有找到。從asp.net中的gridview的編輯項目模板中的存儲過程中查找下拉列表控件c#

ddlParent == null 

總是!

我可能會丟失一些非常明顯的東西,但我已經嘗試過8種不同的方法來獲得這個查找控制工作,但無論我做什麼,它都會出現null。

我已經包含了ASP和C#,sql應該不重要,因爲我甚至無法接聽電話!

ASP:

  <asp:TemplateField SortExpression="LocationArea2.Name" HeaderText="Parent Location Area"> 
       <ItemTemplate> 
        <asp:Label runat="server" Text='<%# Eval("LocationArea2.Name") %>' /> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:DropDownList ID="ddlParent" runat="server" AppendDataBoundItems="true" DataTextField="LocationArea2.Name" 
         DataValueField="ParentID" AutoPostBack="false" SelectedValue='<%# Bind("ParentID") %>'> 
        </asp:DropDownList> 
       </EditItemTemplate> 
      </asp:TemplateField> 

C#:

protected void gvLocationArea_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (gvLocationArea.EditIndex == e.Row.RowIndex) 
     { 
      DropDownList ddlParent = (DropDownList)gvLocationArea.Rows[gvLocationArea.EditIndex].FindControl("ddlParent"); 
      if (ddlParent != null) 
      { 
       using (SalesSQLEntities db = new SalesSQLEntities()) 
       { 
        ddlParent.DataSource = db.GetRecursiveAreaList(Convert.ToInt32(((TextBox)gvLocationArea.Rows[gvLocationArea.EditIndex].FindControl("txtLocationAreaID")).Text), true); 
        ddlParent.DataBind(); 
        ddlParent.Items.Add(new ListItem("* None", "")); 
       } 
      } 
     } 
    } 

我知道有東西在這裏失蹤,控制只是從來沒有發現不管是什麼我已經試過!

回答

1

而不是做一個的FindControl的,使用有問題的列的偏移索引,並獲得第一控制:

(DropDownList)gvLocationArea.Rows[gvLocationArea.EditIndex].Cells[INDEX OF THE DDL].Controls[0] 
+0

感謝您的答覆,但控制仍然沒有找到,它出現空每一個時間... –

+0

@AdamGarner嘗試.Controls [1]。如果這不起作用,那麼創建在回發期間創建的網格的DDL網格是否存在於控制結構中? – Josh

+0

啊,這是否意味着如果ddl在編輯項目模板中,它不會存在,直到它是數據綁定事件之後?如果是這樣,是否有可能在c#中找到控件? –

相關問題