有人用过jqgrid吗?求教一个通用类的问题。
jqgrid需要一个JSON格式的数据来填充数据。每次写都很麻烦,怎么样建一个通用格式的类。当传入LIST后自动转为JQGIRD 需要的JSON。因为每个LIST都是不同的。应该怎么做?
var temp = new
{
total = totalPages,
page = page,
records = totalRecords,
rows =list.Select(i=>new
{
id=i.AnnounceId,
cell=new object[]{ i.AnnounceId,i.Title,string.IsNullOrEmpty(i.LinkUrl)?false:true,i.IsPass,i.IsTop,i.CreateTime}
})
};
//这是JQGRID需要的格式,这个LIST是我建一个公告的LIST
//List<Announce> 格式。然后里面有Announce的属性。
//如果下次换一个LIST呢。属性都会变化了。
怎么样建一个像这样的方法ConvertToJqGridList(int page,int pageSize,int total,List<T>)
然后让他自动转换。谢谢 --------------------编程问答-------------------- 额,自己使用Webmethod即可无需在做啥,非必要封装
[WebMethod]
public static object getData()
{
return new
{
total = totalPages,
page = page,
records = totalRecords,
rows =list.Select(i=>new
{
id=i.AnnounceId,
cell=new object[]{ i.AnnounceId,i.Title,string.IsNullOrEmpty(i.LinkUrl)?false:true,i.IsPass,i.IsTop,i.CreateTime}
})
};
}
WebMethod会自动转换为json
ps:这是为js调用准备的玩意,同样类似的玩意还有新鲜出炉滴wepapi方式,如果你不喜欢这种方式,还可以使用追传统的json.net或JavaScriptSerializer,不必为什么list不list担心,只要的对象不是循环引用的,常规json序列化类都能自动转换 --------------------编程问答-------------------- 有两种方法可以解决这个问题
1.是楼主现在用的方法
用反射找出IEnumerable<T> 里T的属性,然后填入GridModel
我们用这个方法完美解决了楼主的问题,在某个项目中,呵呵
看下面,GridColumn的信息完全可以通过反射来得到。
private void InitializeSortingGridOptions(GridModel model)
{
model.Columns.Add(new GridColumn(HttpContext.GetGlobalResourceObject("Grid", "PRODUCT_ID").ToString(), "ProductID", "number", "100px"));
model.Columns.Add(new GridColumn(HttpContext.GetGlobalResourceObject("Grid", "PRODUCT_NAME").ToString(), "Name", "string", "300px"));
model.Columns.Add(new GridColumn(HttpContext.GetGlobalResourceObject("Grid", "PRODUCT_NUMBER").ToString(), "ProductNumber", "string", "205px"));
model.Columns.Add(new GridColumn(HttpContext.GetGlobalResourceObject("Grid", "STANDARD_COST").ToString(), "StandardCost", "number", "110px"));
GridPaging paging = new GridPaging();
paging.PageSize = 12;
model.Features.Add(paging);
}
官方DEMO在此
http://www.infragistics.com/products/jquery/sample/grid/paging
第二种方法是使用AutoGenerateColumns(true)
http://www.infragistics.com/products/jquery/sample/grid/auto-generate-columns
你只需把AutoGenerateColumns设为True
传入的是一个Model或DatasourceUrl,Infragistics会自动解析
这样的缺点是无法定制一些东西,比如列宽,比如自定义列的统计功能等等
所以大型项目,用户需求高的项目千万别用这个方法……
刚刚辛辛苦苦打的,不小心点掉了……悲剧
@(Html.Infragistics().Grid(Model).ID("grid2").DefaultColumnWidth("170").Height("400px").AutoGenerateColumns(true).Features(features => {
features.Sorting().Mode(SortingMode.Single).ColumnSettings(settings => {
settings.ColumnSetting().ColumnKey("ProductID").AllowSorting(true);
});
}).DataSourceUrl(Url.Action("AutoGenerateColumnsGetData")).DataBind().Render()
--------------------编程问答-------------------- 2楼没看我问的什么。 --------------------编程问答--------------------
仔细看了下,果然看错了,半夜里看成Iggrid了
帮顶下
补充:.NET技术 , C#