No problem, here's my code:
private
RadGrid gvProductRange {
get
{
return
(RadGrid)plcProductRange.FindControl(
"gvProductRange"
); } }<br> <br>
protected
void
Page_Init(
object
sender, EventArgs e)
{
DefineStructure();
}
private
void
DefineStructure()
{
WDBDataContext dc =
new
WDBDataContext();
RadGrid gvProductRangeTmp =
new
RadGrid();
gvProductRangeTmp.ID =
"gvProductRange"
;
gvProductRangeTmp.DataBound += gvProductRange_DataBound;
gvProductRangeTmp.ItemDataBound += gvProductRange_ItemDataBound;
gvProductRangeTmp.NeedDataSource += gvProductRange_NeedDataSource;
gvProductRangeTmp.AllowCustomPaging =
true
;
gvProductRangeTmp.AllowFilteringByColumn =
true
;
gvProductRangeTmp.AllowPaging =
true
;
gvProductRangeTmp.AllowSorting =
true
;
gvProductRangeTmp.AutoGenerateColumns =
false
;
gvProductRangeTmp.PageSize = 50;
gvProductRangeTmp.MasterTableView.AllowCustomPaging =
true
;
gvProductRangeTmp.MasterTableView.AllowSorting =
true
;
gvProductRangeTmp.MasterTableView.AllowPaging =
true
;
gvProductRangeTmp.MasterTableView.AllowFilteringByColumn =
true
;
gvProductRangeTmp.MasterTableView.PageSize = 50;
gvProductRangeTmp.GroupingSettings.CaseSensitive =
false
;
gvProductRangeTmp.Columns.Add(
new
GridBoundColumn() { UniqueName =
"ProductRange"
, HeaderText =
"Product Range"
, AutoPostBackOnFilter =
true
, DataField =
"ProductRange"
, AllowFiltering =
true
});
gvProductRangeTmp.Columns.Add(
new
GridBoundColumn() { UniqueName =
"Product"
, HeaderText =
"Product"
, AutoPostBackOnFilter =
true
, DataField =
"Product"
, AllowFiltering =
true
});
gvProductRangeTmp.Columns.Add(
new
GridBoundColumn() { UniqueName =
"ProductType"
, HeaderText =
"Product Type"
, AutoPostBackOnFilter =
true
, DataField =
"ProductType"
, AllowFiltering =
true
});
gvProductRangeTmp.Columns.Add(
new
GridBoundColumn() { UniqueName =
"Dimensions"
, HeaderText =
"Dimensions"
, AutoPostBackOnFilter =
true
, DataField =
"Dimensions"
, AllowFiltering =
true
});
gvProductRangeTmp.Columns.Add(
new
GridBoundColumn() { UniqueName =
"Material"
, HeaderText =
"Material"
, AutoPostBackOnFilter =
true
, DataField =
"Material"
, AllowFiltering =
true
});
gvProductRangeTmp.Columns.Add(
new
GridNumericColumn() { UniqueName =
"TradePrice"
, HeaderText =
"Trade Price"
, AutoPostBackOnFilter =
true
, DataField =
"TradePrice"
, FilterControlWidth = Unit.Pixel(50), DataFormatString =
"{0:c}"
, AllowFiltering =
true
, NumericType = NumericType.Currency });
List<Wholesaler> wholesalerList = dc.Wholesalers.ToList();
foreach
(Wholesaler wholesaler
in
wholesalerList)
{
gvProductRangeTmp.Columns.Add(
new
GridNumericColumn() { UniqueName = wholesaler.ID.ToString(), AllowFiltering =
false
, NumericType = Telerik.Web.UI.NumericType.Currency, HeaderText = wholesaler.Name, DataField = wholesaler.ID.ToString(), DataFormatString =
"{0:c}"
});
}
plcProductRange.Controls.Add(gvProductRangeTmp);
}
private
DataTable BindGrid(
int
startIndex,
int
pageSize)
{
DataTable dt =
new
DataTable();
dt.Columns.Add(
"ProductRange"
,
typeof
(
string
));
dt.Columns.Add(
"Product"
,
typeof
(
string
));
dt.Columns.Add(
"ProductType"
,
typeof
(
string
));
dt.Columns.Add(
"Dimensions"
,
typeof
(
string
));
dt.Columns.Add(
"Material"
,
typeof
(
string
));
dt.Columns.Add(
"TradePrice"
,
typeof
(
decimal
));
//Long code to get data here
return dt;
}
protected void gvProductRange_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
if (Session["ActiveRevision"] != null)
{
WDBDataContext dc = new WDBDataContext();
int startRowIndex = gvProductRange.CurrentPageIndex * gvProductRange.PageSize;
int maxRows = gvProductRange.PageSize;
DataTable dt = BindGrid(startRowIndex, maxRows);
gvProductRange.VirtualItemCount = dc.Luc_ItemDetails.Count();
gvProductRange.MasterTableView.VirtualItemCount = gvProductRange.VirtualItemCount;
gvProductRange.DataSource = dt;
}
}