選択コマンドフィールドを含むグリッドビューがあります。
詳細ビューを含む更新パネルもあります。
グリッドビューは更新パネルの外にあります。
選択したボタンが押されたときに、グリッドビューの選択した行を変更して、ページを更新せずに詳細ビューに詳細を表示したい。
これが私のコードです:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Column1" DataSourceID="SqlDataSource1">
<Columns>
<asp:CommandField HeaderText="details" ShowSelectButton="True" />
<asp:BoundField DataField="Column1" HeaderText="Column1" SortExpression="Column1" />
</Columns>
<SelectedRowStyle BackColor="#FFFFFF" />
</asp:GridView>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataKeyNames="Column1" DataSourceID="SqlDataSource2" Height="50px" Width="125px">
<Fields>
<asp:BoundField DataField="Column1" HeaderText="Column1" InsertVisible="False" ReadOnly="True" SortExpression="Column1" />
<asp:BoundField DataField="Column2" HeaderText="Column2" SortExpression="Column2" />
</Fields>
</asp:DetailsView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="GridView1" />
</Triggers>
</asp:UpdatePanel>
問題は、選択した行が更新パネルの外にある場合、gridview がその行の色を変更しないことです。updatepanel内に移動すると機能することはわかっていますが、なぜこれが起こるのか知りたいです。
ありがとう。
最も重要なことを忘れていました:
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>"
SelectCommand="SELECT * FROM Products WHERE (Column1=@Column1)">
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" Name="Column1" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
これが不正行為の原因だと思います...しかし、まだ理由はわかりません...