我TT.aspx:不能在EditItemTemplate中訪問下拉列表裏面的GridView
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" AutoGenerateEditButton="true" OnRowEditing="GridView1_RowEditing" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Literal ID="lit1" Text='<%#Eval("E_Name")%>' runat="server">
</asp:Literal>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="Eq" AppendDataBoundItems="true" runat="server" DataSourceID="SqlDataSource2" DataTextField="Name" DataValueField="Name">
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [E_Name], [Problem], [Solution] FROM [Equipment] WHERE ([O_ID] = @O_ID)">
<SelectParameters>
<asp:QueryStringParameter Name="O_ID" QueryStringField="TT" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [Name] FROM [Parts]">
</asp:SqlDataSource>
我TT.aspx.cs
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
Literal xx = (Literal)GridView1.Rows[e.NewEditIndex].FindControl("lit1");
String x = xx.Text;
DropDownList x1 = (DropDownList)GridView1.Rows[e.NewEditIndex].FindControl("Eq");
x1.SelectedValue = x;
}
我是一個新手,asp.net和我只是測試與此代碼。我遇到的問題是第二個FindControl("Eq")
總是返回null
,而第一個(對於文字)返回正確的值。我嘗試將gridview的編輯索引設置爲e.NewEditIndex,但似乎不起作用。
基本上我想要發生的是,如果用戶單擊了一行上的編輯,則在下拉列表中選擇了標籤中的原始數據綁定值。
有人能指導我完成這個嗎?
檢查這個http://stackoverflow.com/questions/12247279/binding-dropdownlist-inside-gridview-edititemtemplate –
我已經檢查出來前問,不過我還是要說看不出它有什麼關係。我這樣說是因爲他正在'RowDataBound'方法中實現代碼,而我在'RowEditing'方法中實現它。另外我已經嘗試過'GridView1.EditIndex = e.NewEditIndex;'但它不起作用。請糾正我,如果我錯了。 – Mohammad