J'ai deux GridViews:asp.net 2 GridViews permettent de glisser-déposer de la source à la destination, mais pas vice-versa
<asp:GridView ID="gvCourses" runat="server" DataKeyNames="Course_ID" AutoGenerateColumns="False" CssClass="drag_drop_grid GridSrc"
ShowHeaderWhenEmpty="true"
ShowFooter="True">
<Columns>
<asp:BoundField DataField="CourseName"/>
<asp:BoundField DataField="DefaultSlope"/>
</Columns>
</asp:GridView>
<hr/>
<asp:GridView ID="gvDest" runat="server" CssClass="drag_drop_grid drag_and_drop_grid_sortable GridDest" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="CourseName"/>
<asp:BoundField DataField="DefaultSlope"/>
</Columns>
</asp:GridView>
J'utilise le code suivant pour glisser-déposer entre eux:
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.8.0.js" type="text/javascript"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.22/jquery-ui.js"></script>
<link rel="Stylesheet" href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/themes/redmond/jquery-ui.css" />
<script type="text/javascript">
$(function() {
$(".drag_drop_grid").sortable({
items: 'tr:not(tr:first-child)',
cursor: 'crosshair',
connectWith: '.drag_drop_grid',
dropOnEmpty: true,
receive: function(e, ui) {
$(this).find("tbody").append(ui.item);
},
sort: function (event, ui) {
var tdCount = 0;
ui.item.find('td').each(function() {
tdCount++;
if (tdCount > 3)
$(this).remove();
});
},
beforeStop: function (event, ui) {
var tdCount = 0;
ui.item.find('td').each(function() {
tdCount++;
if (tdCount > 3)
$(this).remove();
});
},
helper: function (e, tr) {
//copyHelper =
tr.clone().insertAfter(tr);
var tdCount = 0;
tr.find('td').each(function() {
tdCount++;
if (tdCount > 3)
$(this).remove();
});
return tr.clone();
}
});
$("[id*=gvDest] tr:not(tr:first-child)").remove();
});
</script>
Cela fonctionne correctement, mais il permet de trier la grille de la source et de dupliquer les enregistrements. En d'autres termes, je peux laisser tomber des choses sur cette grille qui n'est pas souhaitable.
Il permet également à la grille de destination de dupliquer ses propres enregistrements/lignes de table.
Que dois-je changer dans mon script:
- Disallow tri et tomber sur la grille source.
- Interdire la copie depuis la grille de destination.
Merci.