これは非常に奇妙です。各行に項目テンプレートのチェックボックスとボタンがあるグリッドビューがあります。ユーザーが購入するアイテムのカートに行を追加することを表すボタンのテキスト値を (JQuery を使用して) 切り替えています。グリッドビューとは別のフォームにボタンがあり、クリックするとコードビハインドでイベントが発生し、行がスピンして選択された (トグルされたボタンテキスト) 行が処理されます。しかし、プロセス ボタンを押すと、グリッド行が元の状態 (元のボタン テキストと、以前に選択した行の変更された行属性) に戻ります。私はグリッドを再バインドしていません。これも更新グリッドではありません。現在、チェックボックスは常に問題なく機能していますが、ボタンのテキストは明らかに大きく異なります。なぜこれが起こっているのか、どうすれば修正できるのか、誰か教えてもらえますか? 私が持っている 1 つのアイデアは、非表示のチェックボックスの列を作成することです。ボタンのテキストを切り替えると、チェックボックスも切り替えることができます。しかし、なぜこれが起こっているのかを理解できたらいいのにと思います。また、処理ボタンをチェックした後のポストバックでは、画面もそのままの状態で描画されます。
チェックボックスとボタンを含む私のグリッドは次のとおりです。
<div class="OneHundredPercentWide" style="padding-top:7px">
<asp:Panel ID="Panel1" runat="server" Width="100%" >
<asp:GridView id="grvSessionOrderDownloads" runat="server" BorderWidth="2px" BorderStyle="Solid" BorderColor="#C0C0FF"
Font-Names="Arial" Font-Bold="True" Font-Size="8pt" GridLines="Horizontal" AutoGenerateColumns="False"
HorizontalAlign="Left" ForeColor="Blue" CellPadding="2" AllowSorting="True" Width="100%"
OnRowDataBound="grvSessionOrderDownloads_OnRowDataBound" DataKeyNames="SORD_ID">
<HeaderStyle Font-Names="Arial" HorizontalAlign="Center" ForeColor="White" BackColor="#152EE5"
CssClass="sessionOrderDownloadHeaders" />
<RowStyle BackColor="White" ForeColor="#333333" />
<AlternatingRowStyle BackColor="#A5B0FF" />
<Columns>
<asp:BoundField Visible="False" DataField="SORD_ID" HeaderStyle-Width="0px" >
<HeaderStyle Width="0px" />
</asp:BoundField>
<asp:TemplateField HeaderText="Select <br /> Files" HeaderStyle-ForeColor="White" >
<ItemTemplate >
<asp:CheckBox ID="chkSelectVideo" runat="server" OnClick="checkboxClicked(this)" ToolTip="Select file for download"
Enabled='<%# Eval("SORD_EnableSelectionCheckBox") %>' Checked='<%# Eval("SORD_SelectedForDownloadFlag") %>' />
</ItemTemplate>
<HeaderStyle Width="6%" />
<ItemStyle VerticalAlign="Middle" HorizontalAlign="Center" />
</asp:TemplateField><asp:TemplateField HeaderText="Prior <br /> Downld" HeaderStyle-ForeColor="White" >
<ItemTemplate >
<asp:Button id="btnBuy" runat="server" OnClientClick="btnBuyToggle(this); return false;"
Text="BUY This" CssClass="buyButton" Visible='<%# Eval("SORD_ShowBuyButton") %>' />
</ItemTemplate>
<HeaderStyle Width="7%" />
<ItemStyle CssClass="sessionOrderDownloadItems" VerticalAlign="Middle" HorizontalAlign="Center" />
</asp:TemplateField>
</Columns>
</asp:GridView>
そして、ここにボタンテキストをチェックするための私のコードの一部があります:
Dim gvr As GridViewRow
For Each gvr In grvSessionOrderDownloads.Rows
Dim selBtn As Button = CType(gvr.FindControl("btnBuy"), Button)
If Not selBtn Is Nothing Then
If selBtn.Enabled And selBtn.Visible Then
Dim strSORD_ID As String = grvSessionOrderDownloads.DataKeys(gvr.RowIndex)("SORD_ID").ToString
If selBtn.Text = "BUY Video" Then
// Note: I will process here
End If
End If
End If
Next
ありがとう、ジム