这很奇怪。我有一个gridview,每行都有项目模板复选框和按钮。我正在切换按钮的文本值(使用 JQuery),代表用户将行添加到购物车中以进行购买。我在表单上有一个与 gridview 分开的按钮,单击该按钮时会在后面的代码中引发一个事件,以旋转行并处理选定的(切换按钮文本)行。但是发生的事情是在按下处理按钮时,网格行将恢复到其原始状态(原始按钮文本以及先前选择的行的修改行属性)。我没有重新绑定网格。这也不是更新网格。现在复选框一直工作得很好,但按钮文本显然非常不同。谁能告诉我为什么会发生这种情况以及我该如何纠正它?我的一个想法是创建一列隐藏的复选框,当我切换按钮文本时,我也可以切换复选框。但我当然希望我能理解为什么会这样。此外,在检查了进程按钮的回发时,屏幕也以原始状态呈现。
这是我的带有复选框和按钮的网格:
<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
谢谢你,吉姆