2010-07-23 5 views
1

salut je suis jqgrid qui est lié dynamiquement en utilisant json datatype.my problème est avec la pageing. J'ai écrit le script pour jqgrid dans AddCategory.aspx et redirigé cette page vers AddCategoryGrid.aspx où j'ai écrit le code pour la liaison de données jqGrid. Il affiche tous les enregistrements dans une page mais ne permet pas le pagging.jqgrid dans asp.net en utilisant json datatype

Le code AddCategoryGrid.aspx public partial class AddCatogoryGrid: System.Web.UI.Page {

string sidx; 
    string sord; 
    int page; 
    int rows; 
    DbProvider dbViewCat = new DbProvider(); 
    protected string connectionString; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      sidx = Request.QueryString["sidx"]; 
      sord = Request.QueryString["sord"]; 
      page = Convert.ToInt32(Request.QueryString["page"]); 
      rows = Convert.ToInt32(Request.QueryString["rows"]);   
      Response.Write(GetGridData(sidx, sord, page, rows)); 
      Response.End(); 

     } 
    } 

    public DataTable GetDataTable(string sidx, string sord, int page, int pageSize) 
    { 

     int startIndex = (page - 1) * pageSize; 
     int endIndex = page * pageSize; 
     DataTable dt = new DataTable(); 
     DataSet ds = dbViewCat.AdminSelectCat(); 
     dt = ds.Tables[0]; 
     return dt; 
    } 

    public int GetTotalCount() 
    { 
     DataSet count = dbViewCat.AdminSelectCount(); 
     int i = count.Tables[0].Rows.Count; 
     return i; 
    } 
    public string GetGridData(string sidx, string sord, int page, int rows) 
    { 
     return JsonHelper.JsonForJqgrid(GetDataTable(sidx, sord, page, rows), rows, GetTotalCount(), page); 
    }    
} 

Le script dans AddCategory.aspx pour jqGrid est

<script src="../js/jquery-1.3.2.js" type="text/javascript"></script> 

<script src="../js/jquery-ui-1.8.2.custom.min.js" type="text/javascript"></script> 
<script src="../gridjq/js/jquery.layout.js" type="text/javascript"></script> 
<script src="../gridjq/js/i18n/grid.locale-en.js" type="text/javascript"></script> 
<script type="text/javascript"> 

    $.jgrid.no_legacy_api = true; 
    $.jgrid.useJSON = true; 
    function formateadorLink(cellvalue, options, rowObject) { 
    // return "<a href=AddSubCategory.aspx?CategoryID=" + cellvalue + " > " + "<img src='ThumbImage/1279090533_server_add.ico' border='0'/>" + "</a>"; 
    return "<a href=AddSubCategory.aspx?CategoryId=" + cellvalue + ">"+"<img src='ThumbImage/1279090533_server_add.ico' border='0'/>" + "</a>"; 

    } 

    function formateadorLinkStatus(cellvalue, options, rowObject) { 

     if (cellvalue == 1) { 
      return "<img src='../images/checked.gif' />"; 
     } 
     else { 
      return "<img src='../images/unchecked.gif' />"; 
     } 
    } 

    function formateadorLinkImage(cellvalue, options, rowObject) { 
     return "<img src=CategoryThumbImage/" + cellvalue + " />"; 
    }  


    jQuery(document).ready(function() { 
    jQuery("#list47").jqGrid({ 
    url: 'AddCatogoryGrid.aspx', 
     datatype: "json", 
     id: "CategoryName", 
     colNames: ["Image", "Category", 'Status', 'Add subcategory'], 
     colModel: [ 

    { name: 'Image', index: 'Image', width: 100, align: "center", formatter: 'showlink', formatter: formateadorLinkImage }, 
     { name: 'CategoryName', index: 'CategoryName', width: 150, align: 'left', sortable: true, sorttype: 'text' }, 
    { name: 'Status', index: 'Status', width: 100, align: "right", sortable: false, align: "center", formatter: formateadorLinkStatus }, 
     { name: 'CategoryId', index: 'CategoryId', width: 100, align: "center", formatter: 'showlink', formatter: formateadorLink }, 
     ], 
     height: 280, 
     width: 650, 
     //autowidth: true, 
     mtype: "GET", 
     pager: '#plist47', 
     rowNum: 10, 
     rowList: [5, 10, 15,20,25], 
     repeatitems: false, 
     viewrecords: true, 
     sortname: 'CategoryName', 
     viewrecords: true, 
     sortorder: "desc", 
     gridview: true, 
     imgpath: '/Scripts/themes/redmond/images' 
     });   

    });   
</script> 
<script src="../gridjq/js/jquery.jqGrid.min.js" type="text/javascript"></script> 
<script src="../gridjq/js/jquery.tablednd.js" type="text/javascript"></script> 
<script src="../gridjq/js/jquery.contextmenu.js" type="text/javascript"></script> 
<script src="../gridjq/js/ui.multiselect.js" type="text/javascript"></script> 
<script src="../gridjq/js/grid.celledit.js" type="text/javascript"></script> 
<script src="../gridjq/js/grid.inlinedit.js" type="text/javascript"></script> 
<script src="../gridjq/js/grid.import.js" type="text/javascript"></script> 
<script src="../gridjq/js/grid.formedit.js" type="text/javascript"></script> 
<script src="../gridjq/js/grid.custom.js" type="text/javascript"></script> 
<script src="../gridjq/js/grid.setcolumns.js" type="text/javascript"></script> 
<script src="../gridjq/js/json2.js" type="text/javascript"></script> 
<script src="../gridjq/js/jquery.fmatter.js" type="text/javascript"></script> 
<script src="../gridjq/js/jquery.cookie.js" type="text/javascript"></script> 
<script src="../gridjq/js/grid.tbltogrid.js" type="text/javascript"></script> 

La classe Helper i utilisé est

public class JsonHelper 
{ 
    public static string JsonForJqgrid(DataTable dt, int pageSize, int totalRecords, int page) 
    { 
     int totalPages = (int)Math.Ceiling((float)totalRecords/(float)pageSize); 
     StringBuilder jsonBuilder = new StringBuilder(); 
     jsonBuilder.Append("{"); 
     jsonBuilder.Append("\"total\":" + totalPages + ",\"page\":" + page + ",\"records\":" + (totalRecords)); 
     bool First = true; 
     for (int i = 0; i < dt.Rows.Count; i++) 
     { 
      if (First) 
      { 
       jsonBuilder.Append(",\"rows\":["); 
       First = false; 
      } 
      jsonBuilder.Append("{\"i\":" + (i) + ",\"cell\":["); 
      for (int j = 0; j < dt.Columns.Count; j++) 
      { 
       jsonBuilder.Append("\""); 
       jsonBuilder.Append(dt.Rows[i][j].ToString()); 
       jsonBuilder.Append("\","); 
      } 
      jsonBuilder.Remove(jsonBuilder.Length - 1, 1); 
      jsonBuilder.Append("]},"); 
     } 
     if (!First) 
     { 
      jsonBuilder.Remove(jsonBuilder.Length - 1, 1); 
      jsonBuilder.Append("]"); 
     } 
     jsonBuilder.Append("}"); 
     return jsonBuilder.ToString(); 
    }  
} 

Quelqu'un peut-il trouver pourquoi le pagging ne fonctionne pas correctement.

Répondre

1
public DataTable GetDataTable(string sidx, string sord, int page, int pageSize) 
{   
    int startIndex = (page-1) * pageSize;  
    int endIndex = page * pageSize;  
    string sql = @"WITH PAGED_CUSTOMERS AS (SELECT CustomerID, ContactName, Address, City, PostalCode, ROW_NUMBER() OVER (ORDER BY " + sidx + @" " + sord + @") AS RowNumber FROM CUSTOMERS) SELECT CustomerID, ContactName, Address, City, PostalCode FROM PAGED_CUSTOMERS WHERE RowNumber BETWEEN " + startIndex + @" AND " + endIndex + @";"; 
    DataTable dt = new DataTable(); 
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["mainConnection"].ConnectionString); 
    SqlDataAdapter adap = new SqlDataAdapter(sql,conn); 
    var rows=adap.Fill(dt);  
    return dt; 
}