PDA

View Full Version : سوال: صفحه بندی گرید تلریک



fakhravari
پنج شنبه 23 اردیبهشت 1395, 14:09 عصر
با سلام

به چه شکل از قابلیت صفحه بندی SQL برای این گرید استفاده کنیم؟

maxpayn2
یک شنبه 26 اردیبهشت 1395, 14:35 عصر
سلام . گرید تلریک خودش صفحه بندی داره

fakhravari
یک شنبه 26 اردیبهشت 1395, 14:43 عصر
سلام
عزیز دل صفحه بندی sql مد نظرم که هر 10 تا 10 تا مثلا واکشی کنید

fakhravari
پنج شنبه 30 اردیبهشت 1395, 13:47 عصر
using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using Telerik.Web.UI;


namespace RadGridSample
{
public class RadGridHelper
{
public static string GetOrderBy(GridTableView tableView)
{
return GetOrderBy(tableView, string.Empty, new string[0]);
}


public static string GetOrderBy(GridTableView tableView, string fieldNamePrefix, params string[] skipFieldNames)
{
var foundKeys = new List<string>();
var orderBy = new StringBuilder();


if (fieldNamePrefix == null)
{
fieldNamePrefix = string.Empty;
}


if (skipFieldNames == null)
{
skipFieldNames = new string[0];
}


foreach (GridSortExpression sortExpression in tableView.SortExpressions)
{
switch (sortExpression.SortOrder)
{
case GridSortOrder.Ascending:
Append(orderBy, skipFieldNames.Contains(sortExpression.FieldName) ? sortExpression.FieldName : fieldNamePrefix + sortExpression.FieldName);
if (tableView.DataKeyNames.Any(kn => !foundKeys.Contains(kn)))
{
foundKeys.Add(sortExpression.FieldName);
}
break;
case GridSortOrder.Descending:
Append(orderBy, skipFieldNames.Contains(sortExpression.FieldName) ? sortExpression.FieldName : fieldNamePrefix + sortExpression.FieldName, " desc");
if (tableView.DataKeyNames.Any(kn => !foundKeys.Contains(kn)))
{
foundKeys.Add(sortExpression.FieldName);
}
break;
case GridSortOrder.None:
break;
default:
break;
}
}


foreach (string keyName in tableView.DataKeyNames.Where(kn => !foundKeys.Contains(kn)))
{
Append(orderBy, skipFieldNames.Contains(keyName) ? keyName : fieldNamePrefix + keyName);
}


return (orderBy.ToString());
}


private static void Append(StringBuilder builder, params string[] strings)
{
if (builder.Length > 0 && strings.Length > 0)
{
builder.Append(",");
}
foreach (var s in strings)
{
if (builder.Length > 0)
{
builder.Append(" ");
}
builder.Append(s);
}
}


public static string GetFilterExpression(GridTableView view, string fieldNamePrefix, params string[] skipFieldNames)
{
if (string.IsNullOrEmpty(fieldNamePrefix))
{
return view.FilterExpression;
}


if (skipFieldNames == null)
{
skipFieldNames = new string[0];
}


string result = view.FilterExpression;


foreach (var column in view.Columns)
{
if (!(column is GridBoundColumn) || string.IsNullOrEmpty((column as GridBoundColumn).DataField))
{
continue;
}


string fieldName = (column as GridBoundColumn).DataField;


if (!skipFieldNames.Contains(fieldName))
{
result = result.Replace(fieldName, fieldNamePrefix + fieldName);
}
}


return result;
}
}
}











using System;using Telerik.Web.UI;


namespace RadGridSample
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
RadGrid1.DataBind();
}
}


protected void RadGrid1_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
if (!e.IsFromDetailTable)
{
string where = RadGridHelper.GetFilterExpression(RadGrid1.MasterT ableView, null);
string orderBy = RadGridHelper.GetOrderBy(RadGrid1.MasterTableView) ;


if (e.RebindReason == GridRebindReason.InitialLoad || e.RebindReason == GridRebindReason.ExplicitRebind)
{
RadGrid1.VirtualItemCount = Book.GetBooksCount(where);
}


int skip = RadGrid1.MasterTableView.CurrentPageIndex * RadGrid1.MasterTableView.PageSize;
int take = RadGrid1.MasterTableView.PageSize;


RadGrid1.DataSource = Book.GetBooks(where, orderBy, skip, take);
}
}
}
}