Это очень странно. У меня есть gridview с флажками и кнопками в каждой строке. Я переключаю текстовое значение кнопок (используя JQuery), представляя пользователя, добавляющего строки в корзину предметов для покупки. У меня есть кнопка в форме, отдельно от gridview, которая при нажатии вызывает событие в коде за спиной, чтобы прокручивать строки и обрабатывать выбранные строки (перетаскиваемые кнопки). Но происходит то, что при нажатии кнопки процесса строки сетки возвращаются в исходное состояние (исходный текст кнопки, а также измененные атрибуты строки для ранее выбранных строк). Я не перевязываю сетку. Это также не сетка обновлений. Теперь флажки всегда работали нормально, но текст кнопки явно отличается. Может ли кто-нибудь сказать мне, почему это происходит и как я могу это исправить? Одна из моих идей - создать столбец скрытых флажков, и когда я переключаю текст на кнопке, я могу также переключать флажки. Но я, конечно, хотел бы понять, почему это происходит. Кроме того, при возврате от кнопки процесса, которая была проверена, экран отображается в исходном состоянии.Строки 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
Спасибо, Jim
Когда вы нажмете кнопку, она будет «возвращать назад», которая обновит страницу. Все, что вы делаете на стороне клиента, исчезнет. – fankt
На каком событии вы раскалываете Gridview с помощью источника данных? –
Я привязываю сетку к загрузке страницы, если не обратная передача. Я не делаю никаких повторных привязок к каким-либо событиям, нет rowupdate и т. Д. –