Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用jquery在两个asp表之间拖放数据_C#_Jquery_Asp.net_Drag And Drop - Fatal编程技术网

C# 使用jquery在两个asp表之间拖放数据

C# 使用jquery在两个asp表之间拖放数据,c#,jquery,asp.net,drag-and-drop,C#,Jquery,Asp.net,Drag And Drop,我需要在asp.net C#中做一个规划应用程序,需要拖放才能将数据从一个表移动到另一个表。2表是在代码隐藏中动态生成的。我需要能够修改数据,而无需每次拖放数据时刷新页面,因此我只在修改表时在客户端工作 我使用可拖放jquery ui函数在表之间移动数据,但当我需要将表导出到.xls中或将其保存在数据库中时,拖放数据似乎不在表中,即使我可以在表显示中看到它们 因此,我想知道如何将拖放的数据添加到表中,而不仅仅是移动div 以下是我的javascript代码: $_dropEnd = null;

我需要在asp.net C#中做一个规划应用程序,需要拖放才能将数据从一个表移动到另一个表。2表是在代码隐藏中动态生成的。我需要能够修改数据,而无需每次拖放数据时刷新页面,因此我只在修改表时在客户端工作

我使用可拖放jquery ui函数在表之间移动数据,但当我需要将表导出到.xls中或将其保存在数据库中时,拖放数据似乎不在表中,即使我可以在表显示中看到它们

因此,我想知道如何将拖放的数据添加到表中,而不仅仅是移动div

以下是我的javascript代码:

$_dropEnd = null;

$(function () {
   $(".drag").draggable({
     helper: "clone",
     revert: 'invalid',
     stop: function (event, ui) {
         $(this).appendTo($_dropEnd);
         $_dropEnd = null;
     }
   });
   $(".drop").droppable({
     accept: ".drag",
     tolerance: "touch",
     drop: function (event, ui) {
         $_dropEnd = this; 
     }
   })
});

当您创建ASP.NET控件(即HTML表格或ASP.NET网格视图)时,它的状态在提供给页面之前保存在服务器端,通过客户端对它所做的任何更改都不会通过回发保留,因此数据看起来不会移动

要解决这个问题,一个选择是使用Ajax。您可以将表的HTML发送到Web服务,以便处理和保存数据

$('#save').click(function() {
   // Creates an Object to store the HTML of the two tables
   var o = new Object();
   o.table1 = $('#htmlTable1-Container').html();
   o.table2 = $('#htmlTable2-Container').html();

   // Creates a JSON String for this Object
   var x = JSON.stringify(o);

   // In your Web Service create a Method that has the parameters (string table1, string table2)    

   $.ajax({
      url: "WEB SERVICE LINK",
      data:x,
      success: function() {
         // Ajax Call Successful
      },
      error: function() {
         // Ajax Call Failed
      }
   });
});
另一种选择(这有点尴尬,也不是最好的主意)是将表的HTML存储在启用输入的ASP.NET控件(即文本框)中,然后您可以在回发时检索它并在服务器端处理数据

// Stores the HTML of the two tables in Two ASP.NET Textboxes for retrieval by the Server on postback.
$('#save').click(function() {
   $('#<%= tb1.ClientID %>').val($('#htmlTable1-Container').html());
   $('#<%= tb2.ClientID %>').val($('#htmlTable2-Container').html());
});
//将两个表的HTML存储在两个ASP.NET文本框中,以便服务器在回发时检索。
$(“#保存”)。单击(函数(){
$('#').val($('#htmlTable1容器').html());
$('#').val($('#htmlTable2容器').html());
});

因此,在第一种情况下,数据直接保存在数据库中,或者通过AJAX传递,存储在表中,然后AJAX再次发送表?使用AJAX方法时,将表的HTML发送到该方法。在这种方法中,您必须手动解析该HTML以获取需要存储在数据库中的值。