グリッドビューの行を並べ替えようとしています。ソート部分は機能していますが、ソート後、editindex は前の ID のままであるため、編集すると間違ったデータがロードされます。
私のグリッドビューは次のようになります。
<asp:GridView OnRowDataBound="grdLots_RowDataBound" ID="grdLots" runat="server" AutoGenerateColumns="False" CssClass="grid"
AlternatingRowStyle-CssClass="gridAltRow" RowStyle-CssClass="gridRow" EditRowStyle-CssClass="gridEditRow" FooterStyle-CssClass="gridFooterRow"
OnRowEditing="grdLots_RowEditing" EmptyDataText="Geen resultaten gevonden" OnRowDeleting="grdLots_RowDeleting" DataKeyNames="Lot_No">
<Columns>
<asp:TemplateField HeaderText="Edit" ShowHeader="False" HeaderStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:LinkButton ID="lnkEditLot" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit"></asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
>>>
</EditItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Delete" ShowHeader="False" HeaderStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:LinkButton ID="lnkDeleteLot" runat="server" CausesValidation="False" CommandName="Delete" Text="Delete"></asp:LinkButton>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
</asp:TemplateField>
</Columns>
</asp:GridView>
私のjsは次のようになります:
<script type="text/javascript">
(function ($) {
$(document).ready(function () {
// Return a helper with preserved width of cells
var fixHelper = function (e, ui) {
ui.children().each(function () {
$(this).width($(this).width());
});
return ui;
};
var $sortableTable = jQuery('#<%= grdLots.ClientID %> tbody');
$sortableTable.sortable({
helper: fixHelper,
update: function (event, ui) {
var order = $sortableTable.sortable('toArray');
$.post('/DesktopModules/DNN.WebAPI/API/Ajax/SortLots?rows=' + order);
}
});
});
})(jQuery);
</script>
データはデータベースに正しく保存されますが、並べ替え後にグリッドビューの行を編集したい場合は、前の ID が取得されます。画面の一部をjQueryロード機能でロードして解決しようとしましたが、それもうまくいきません。