Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.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
将datatables与asp.net c#、LINQ和具有分页器的存储过程一起使用_C#_Asp.net_Sql Server_Linq_Jquery Datatables - Fatal编程技术网

将datatables与asp.net c#、LINQ和具有分页器的存储过程一起使用

将datatables与asp.net c#、LINQ和具有分页器的存储过程一起使用,c#,asp.net,sql-server,linq,jquery-datatables,C#,Asp.net,Sql Server,Linq,Jquery Datatables,我将数据库与asp.net、c#、Linq和SQL Server存储过程一起使用,我的过程内部有分页功能,可以获取当前页面的参数 我的aspx代码如下(对于datatables) 这是我的c代码 DataClassesErrorsDataContext conx=newDataClasseSerrorsDataContext(); 列出所有结果= conx.MK_Bad_Gridview_Paging_281_Rejected_linq(页码).ToList(); 返回所有结果; PAGE

我将数据库与asp.net、c#、Linq和SQL Server存储过程一起使用,我的过程内部有分页功能,可以获取当前页面的参数

我的aspx代码如下(对于datatables)

这是我的c代码

DataClassesErrorsDataContext conx=newDataClasseSerrorsDataContext();
列出所有结果=
conx.MK_Bad_Gridview_Paging_281_Rejected_linq(页码).ToList();
返回所有结果;
PAGENUMBER
参数需要获取用户在datatables paging结果表中单击的当前页面,然后将其发送到SQL Server中的我的存储过程以获取当前页面结果

  • 如何首先将所有计数结果加载到datatables以使其分页正确
  • 如何在datatables中获取当前单击的页码,并将其发送到我的c#代码,以便传递到SQL Server过程

  • 我确信,存储过程不是通过分页获取网格数据的最方便的方法,因为除了当前页面外,您迟早会传递排序和筛选选项,而这些操作在选择数据页面后无法完成。放弃存储过程,将SQL查询转换为链接查询,使用动态linq来使用字符串表达式。如果需要,我可以写一个c#示例代码。然而,在我看来,没有什么比ExtJS GridPanel更好的发明了

    J使用SQL server存储过程查询数据表
    通过动态高效的分页结构,
    支持所有服务器版本

    Step 1:(HTML)
    
     <link href="../Content/css/datatables.min.css" rel="stylesheet" />
     <script src="../Scripts/datatables.min.js"></script>
     <script src="../Scripts/jQuery-2.1.4.min.js"></script>
    
     <script>
     $(document).ready(function () {
          if ($.fn.dataTable.isDataTable('#tbl_category')) {
            t.destroy();
        }
        t = $("#tbl_category").DataTable({
            processing: true,
            serverSide: true,
            info: true,
            ajax: {
                url: '../Ajax/Category?option=GetAllAdminCategory&user_srno='+user_srno,
                data: function (data) {
                    delete data.columns;
                }
            },
            columns: [
                        { "data": "abc" },
                        { "data": "name" },
                        { "data": "baseDiscount" },
                        { "data": "additionalDiscount" },
                        { "data": "specialDiscount" },
                        {
                            "render": function (data, type, full, meta) {
                                return '<a class="btn btn-warning" onClick="editdata(' + full.srno + ',\'' + full.name + '\',\'' + full.baseDiscount + '\',\'' + full.additionalDiscount + '\',\'' + full.specialDiscount + '\',\'' + full.specialDiscount + '\')" href="javascript://">Edit</a>&nbsp;&nbsp;<a class="btn btn-danger" onClick="deletePhantom(' + full.srno + ',\'DELETE\')" href="javascript://">Remove</a>';
                            }
                        }
            ],
            order: [[0, 'desc']],
            select: true,
            dom: 'lfrtip',
            responsive: true,
            buttons: true
        });
        t.on('order.dt search.dt', function () {
            t.column(0, { search: 'applied', order: 'applied' }).nodes().each(function (cell, i) {
                cell.innerHTML = i + 1;
            });
        }).draw();
    
    });
     </script>
    
     <table id="tbl_category" class="display" cellspacing="0" width="100%">
                            <thead>
                                <tr>
                                    <th>#</th>
                                    <th>Name</th>
                                    <th>Base Discount</th>
                                    <th>Additional Discount</th>
                                    <th>Special Discount</th>
                                    <th>Action</th>
                                </tr>
                            </thead>
                            <tfoot>
                                <tr>
                                    <th>#</th>
                                    <th>Name</th>
                                    <th>Base Discount</th>
                                    <th>Additional Discount</th>
                                    <th>Special Discount</th>
                                    <th>Action</th>
                                </tr>
                            </tfoot>
                        </table>
    
    STEP :2 (Stored Procedure)
    
    Create procedure [dbo].[category_post]
     @srno int=null,
     @user_srno int=null,
     @catSrno int=null,
     @name varchar(200)=null,
     @baseDiscount numeric(18,2)=null,
     @additionalDiscount numeric(18,2)=null,
     @specialDiscount numeric(18,2)=null,
     @status int null,
     @Action_by int null,
     @option varchar(20) = null,
     @orderColumn  int =null,
    @orderDir  varchar(20)=null,
    @start  int =null,
    @limit  int =null,
    @searchKey varchar(20)
      as 
      BEGIN
    
    if @option='GetAllAdminCategory'
      begin
    
        select IDENTITY(int,1,1) as SnoID, null as abc,specialDiscount, additionalDiscount, baseDiscount, name,cast(srno as varchar(20)) as srno
                --this method is userful for all sql server version (it can be made better by using fetch)
        into #tempCategory
         from categoryStd where [status] not in(4,14) and categoryStd.name like '%'+@searchKey+'%'
    
         declare @to as int = @start+@limit 
    
         select * from #tempCategory where SnoID>@start and SnoID<=@to
    
            order by
                        CASE WHEN @orderColumn = 1 AND @orderdir = 'desc' THEN #tempCategory.[name] END DESC,
                        CASE WHEN @orderColumn = 1 AND @orderdir = 'asc' THEN #tempCategory.[name] END ASC,
                        CASE WHEN @orderColumn = 2 AND @orderdir = 'desc' THEN #tempCategory.[name] END DESC,
                        CASE WHEN @orderColumn = 2 AND @orderdir = 'asc' THEN #tempCategory.[name] END ASC
    
                 OFFSET @start ROWS FETCH NEXT @limit ROWS ONLY
    
            select count(*) from #tempCategory
    
      end           
    
    
    
    STEP:3 (AJAX Page) C# form
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Configuration;
    using AppBlock;
    using System.Data.SqlClient;
    using Newtonsoft.Json;
    
    namespace alfest.Ajax
    {
      public partial class Category : System.Web.UI.Page
      {
        string mode, option, user, limit, start, searchKey, orderByColumn, orderByDir, estMstSrno, pnlsrno, draw, jsonString;
        CommonClass cmnCls = new CommonClass();
        protected void Page_Load(object sender, EventArgs e)
        {
          mode = Request.QueryString["mode"] == null ? "" : Request.QueryString["mode"].ToString();
          option = Request.QueryString["option"] == null ? "" : Request.QueryString["option"].ToString();
          limit = Request.QueryString["length"] == null ? "" : Request.QueryString["length"].ToString();
          start = Request.QueryString["start"] == null ? "" : Request.QueryString["start"].ToString();
          user = Request.QueryString["user"] == null ? "" : Request.QueryString["user"].ToString();
          searchKey = Request.QueryString["search[value]"] == null ? "" : Request.QueryString["search[value]"].ToString();
          orderByColumn = Request.QueryString["order[0][column]"] == null ? "" : Request.QueryString["order[0][column]"].ToString();
          orderByDir = Request.QueryString["order[0][dir]"] == null ? "" : Request.QueryString["order[0][dir]"].ToString();
          estMstSrno = Request.QueryString["estMstSrno"] == null ? "" : Request.QueryString["estMstSrno"].ToString();
          pnlsrno = Request.QueryString["pnlsrno"] == null ? "" : Request.QueryString["pnlsrno"].ToString();
          draw = Request.QueryString["draw"] == null ? "" : Request.QueryString["draw"].ToString();
    
          if (option == "GetAllAdminCategory")
          {
    
           // Cls_Category CatgObj = new Cls_Category();
           // CatgObj.orderColumn = Convert.ToInt32(orderByColumn);
           // CatgObj.limit = Convert.ToInt32(limit);
           // CatgObj.orderDir = orderByDir;
           // CatgObj.start = Convert.ToInt32(start);
           // CatgObj.searchKey = searchKey;
           // CatgObj.option = "GetAllAdminCategory";
    
          // or user your own method to get data (just fill the dataset)
    
          //  DataSet ds = cmnCls.PRC_category(CatgObj);
    
            dynamic newtonresult = new
              {
                status = "success",
                draw = Convert.ToInt32(draw == "" ? "0" : draw),
                recordsTotal = ds.Tables[1].Rows[0][0],
                recordsFiltered = ds.Tables[1].Rows[0][0],
                data = ds.Tables[0]
              };
            jsonString = JsonConvert.SerializeObject(newtonresult);
    
            Response.Clear();
            Response.ContentType = "application/json";
            Response.Write(jsonString);
    
          }
        }
      }
    }
    
    步骤1:(HTML)
    $(文档).ready(函数(){
    if($.fn.dataTable.isDataTable(“#待分类”)){
    t、 破坏();
    }
    t=$(“#待分类”)。数据表({
    处理:对,
    服务器端:是的,
    信息:没错,
    阿贾克斯:{
    url:“../Ajax/Category?option=GetAllAdminCategory&user\u srno=”+user\u srno,
    数据:函数(数据){
    删除数据列;
    }
    },
    栏目:[
    {“数据”:“abc”},
    {“数据”:“名称”},
    {“数据”:“基本折扣”},
    {“数据”:“额外折扣”},
    {“数据”:“SpecialDiscovery”},
    {
    “呈现”:函数(数据、类型、完整、元){
    返回“”;
    }
    }
    ],
    订单:[[0,'说明']],
    选择:true,
    dom:'lfrtip',
    回答:是的,
    按钮:正确
    });
    t、 on('order.dt search.dt',函数(){
    t、 列(0,{search:'applied',order:'applied'}).nodes().each(函数(单元格,i){
    cell.innerHTML=i+1;
    });
    }).draw();
    });
    #
    名称
    基本折扣
    附加折扣
    特别折扣
    行动
    #
    名称
    基本折扣
    附加折扣
    特别折扣
    行动
    步骤:2(存储过程)
    创建过程[dbo].[category_post]
    @srno int=null,
    @用户\u srno int=null,
    @catSrno int=null,
    @名称varchar(200)=空,
    @基本折扣数字(18,2)=空,
    @额外折扣数字(18,2)=空,
    @SpecialDiscovery数字(18,2)=空,
    @状态int null,
    @由int null执行的操作,
    @选项varchar(20)=空,
    @orderColumn int=null,
    @orderDir varchar(20)=空,
    @start int=null,
    @限制int=null,
    @搜索键varchar(20)
    作为
    开始
    如果@option='GetAllAdminCategory'
    开始
    选择IDENTITY(int,1,1)作为SnoID,null作为abc,specialdiscont,additionalDiscount,baseDiscount,name,cast(srno作为varchar(20))作为srno
    --此方法适用于所有sql server版本(使用fetch可以使其更好)
    归入#临时类别
    来自categoryStd,其中[status]不在(4,14)中,categoryStd.name类似“%”++@searchKey++“%”
    将@to声明为int=@start+@limit
    从SnoID>@start和SnoID所在的#tempCategory中选择*
    
    DataClassesErrorsDataContext conx = new DataClassesErrorsDataContext();
    List<MK_Bad_Gridview_Paging_281_Rejected_linqResult> allresults =
        conx.MK_Bad_Gridview_Paging_281_Rejected_linq(PAGENUMBER).ToList();
    return allresults;
    
    Step 1:(HTML)
    
     <link href="../Content/css/datatables.min.css" rel="stylesheet" />
     <script src="../Scripts/datatables.min.js"></script>
     <script src="../Scripts/jQuery-2.1.4.min.js"></script>
    
     <script>
     $(document).ready(function () {
          if ($.fn.dataTable.isDataTable('#tbl_category')) {
            t.destroy();
        }
        t = $("#tbl_category").DataTable({
            processing: true,
            serverSide: true,
            info: true,
            ajax: {
                url: '../Ajax/Category?option=GetAllAdminCategory&user_srno='+user_srno,
                data: function (data) {
                    delete data.columns;
                }
            },
            columns: [
                        { "data": "abc" },
                        { "data": "name" },
                        { "data": "baseDiscount" },
                        { "data": "additionalDiscount" },
                        { "data": "specialDiscount" },
                        {
                            "render": function (data, type, full, meta) {
                                return '<a class="btn btn-warning" onClick="editdata(' + full.srno + ',\'' + full.name + '\',\'' + full.baseDiscount + '\',\'' + full.additionalDiscount + '\',\'' + full.specialDiscount + '\',\'' + full.specialDiscount + '\')" href="javascript://">Edit</a>&nbsp;&nbsp;<a class="btn btn-danger" onClick="deletePhantom(' + full.srno + ',\'DELETE\')" href="javascript://">Remove</a>';
                            }
                        }
            ],
            order: [[0, 'desc']],
            select: true,
            dom: 'lfrtip',
            responsive: true,
            buttons: true
        });
        t.on('order.dt search.dt', function () {
            t.column(0, { search: 'applied', order: 'applied' }).nodes().each(function (cell, i) {
                cell.innerHTML = i + 1;
            });
        }).draw();
    
    });
     </script>
    
     <table id="tbl_category" class="display" cellspacing="0" width="100%">
                            <thead>
                                <tr>
                                    <th>#</th>
                                    <th>Name</th>
                                    <th>Base Discount</th>
                                    <th>Additional Discount</th>
                                    <th>Special Discount</th>
                                    <th>Action</th>
                                </tr>
                            </thead>
                            <tfoot>
                                <tr>
                                    <th>#</th>
                                    <th>Name</th>
                                    <th>Base Discount</th>
                                    <th>Additional Discount</th>
                                    <th>Special Discount</th>
                                    <th>Action</th>
                                </tr>
                            </tfoot>
                        </table>
    
    STEP :2 (Stored Procedure)
    
    Create procedure [dbo].[category_post]
     @srno int=null,
     @user_srno int=null,
     @catSrno int=null,
     @name varchar(200)=null,
     @baseDiscount numeric(18,2)=null,
     @additionalDiscount numeric(18,2)=null,
     @specialDiscount numeric(18,2)=null,
     @status int null,
     @Action_by int null,
     @option varchar(20) = null,
     @orderColumn  int =null,
    @orderDir  varchar(20)=null,
    @start  int =null,
    @limit  int =null,
    @searchKey varchar(20)
      as 
      BEGIN
    
    if @option='GetAllAdminCategory'
      begin
    
        select IDENTITY(int,1,1) as SnoID, null as abc,specialDiscount, additionalDiscount, baseDiscount, name,cast(srno as varchar(20)) as srno
                --this method is userful for all sql server version (it can be made better by using fetch)
        into #tempCategory
         from categoryStd where [status] not in(4,14) and categoryStd.name like '%'+@searchKey+'%'
    
         declare @to as int = @start+@limit 
    
         select * from #tempCategory where SnoID>@start and SnoID<=@to
    
            order by
                        CASE WHEN @orderColumn = 1 AND @orderdir = 'desc' THEN #tempCategory.[name] END DESC,
                        CASE WHEN @orderColumn = 1 AND @orderdir = 'asc' THEN #tempCategory.[name] END ASC,
                        CASE WHEN @orderColumn = 2 AND @orderdir = 'desc' THEN #tempCategory.[name] END DESC,
                        CASE WHEN @orderColumn = 2 AND @orderdir = 'asc' THEN #tempCategory.[name] END ASC
    
                 OFFSET @start ROWS FETCH NEXT @limit ROWS ONLY
    
            select count(*) from #tempCategory
    
      end           
    
    
    
    STEP:3 (AJAX Page) C# form
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Configuration;
    using AppBlock;
    using System.Data.SqlClient;
    using Newtonsoft.Json;
    
    namespace alfest.Ajax
    {
      public partial class Category : System.Web.UI.Page
      {
        string mode, option, user, limit, start, searchKey, orderByColumn, orderByDir, estMstSrno, pnlsrno, draw, jsonString;
        CommonClass cmnCls = new CommonClass();
        protected void Page_Load(object sender, EventArgs e)
        {
          mode = Request.QueryString["mode"] == null ? "" : Request.QueryString["mode"].ToString();
          option = Request.QueryString["option"] == null ? "" : Request.QueryString["option"].ToString();
          limit = Request.QueryString["length"] == null ? "" : Request.QueryString["length"].ToString();
          start = Request.QueryString["start"] == null ? "" : Request.QueryString["start"].ToString();
          user = Request.QueryString["user"] == null ? "" : Request.QueryString["user"].ToString();
          searchKey = Request.QueryString["search[value]"] == null ? "" : Request.QueryString["search[value]"].ToString();
          orderByColumn = Request.QueryString["order[0][column]"] == null ? "" : Request.QueryString["order[0][column]"].ToString();
          orderByDir = Request.QueryString["order[0][dir]"] == null ? "" : Request.QueryString["order[0][dir]"].ToString();
          estMstSrno = Request.QueryString["estMstSrno"] == null ? "" : Request.QueryString["estMstSrno"].ToString();
          pnlsrno = Request.QueryString["pnlsrno"] == null ? "" : Request.QueryString["pnlsrno"].ToString();
          draw = Request.QueryString["draw"] == null ? "" : Request.QueryString["draw"].ToString();
    
          if (option == "GetAllAdminCategory")
          {
    
           // Cls_Category CatgObj = new Cls_Category();
           // CatgObj.orderColumn = Convert.ToInt32(orderByColumn);
           // CatgObj.limit = Convert.ToInt32(limit);
           // CatgObj.orderDir = orderByDir;
           // CatgObj.start = Convert.ToInt32(start);
           // CatgObj.searchKey = searchKey;
           // CatgObj.option = "GetAllAdminCategory";
    
          // or user your own method to get data (just fill the dataset)
    
          //  DataSet ds = cmnCls.PRC_category(CatgObj);
    
            dynamic newtonresult = new
              {
                status = "success",
                draw = Convert.ToInt32(draw == "" ? "0" : draw),
                recordsTotal = ds.Tables[1].Rows[0][0],
                recordsFiltered = ds.Tables[1].Rows[0][0],
                data = ds.Tables[0]
              };
            jsonString = JsonConvert.SerializeObject(newtonresult);
    
            Response.Clear();
            Response.ContentType = "application/json";
            Response.Write(jsonString);
    
          }
        }
      }
    }