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.