我的 TT.aspx:
<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 但似乎不起作用。
基本上我想要发生的是,如果用户单击一行上的编辑,则在下拉列表中选择标签中的原始数据绑定值。
请问有人可以指导我吗?