私の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の初心者で、このコードでのみテストしています。私が抱えている問題は、最初のもの(リテラルの場合)が正しい値を返すのに対し、2番目FindControl("Eq")
は常に返されることです。null
グリッドビューの編集インデックスを e.NewEditIndex に設定しようとしましたが、うまくいかないようです。
基本的に私がしたいことは、ユーザーが行の編集をクリックすると、ラベルにある元のデータバインド値がドロップダウンリストで選択されることです。
誰でもこれを案内してもらえますか?