Hi!
I've a radgrid with autogeneratecolumn=true, i'm using advenced databinding to bind the data.
when i change the page or apply filter/sorting the radgrid throws exception during the binding (eg column not found).
the problem occures when change the datasource and reloaded the page.
I tried to set enableviewstatecolumn=false but not works.
Can I help me?
<
asp:Content
ID
=
"Content2"
ContentPlaceHolderID
=
"MainContent"
runat
=
"Server"
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
</
telerik:RadAjaxManager
>
<
telerik:RadAjaxLoadingPanel
ID
=
"LoadingPanel1"
runat
=
"server"
/>
<
fieldset
id
=
"Facility"
class
=
"dashboardFieldsetDisplay"
>
<
legend
>Facility Data</
legend
>
<
asp:Panel
ID
=
"FacilityGrids"
runat
=
"server"
CssClass
=
"dashboardGrid"
></
asp:Panel
>
</
fieldset
>
<
fieldset
id
=
"Company"
class
=
"dashboardFieldsetDisplay"
>
<
legend
>Company Data</
legend
>
<
asp:Panel
ID
=
"CompanyGrids"
runat
=
"server"
CssClass
=
"dashboardGrid"
></
asp:Panel
>
</
fieldset
>
<
fieldset
id
=
"Region"
class
=
"dashboardFieldsetDisplay"
>
<
legend
>Region Data</
legend
>
<
asp:Panel
ID
=
"RegionGrids"
runat
=
"server"
CssClass
=
"dashboardGrid"
></
asp:Panel
>
</
fieldset
>
<
div
class
=
"clearBoth"
></
div
>
<
div
class
=
"displayNone"
>
<
asp:Timer
ID
=
"Ticker"
runat
=
"server"
OnTick
=
"Ticker_Ticked"
></
asp:Timer
>
</
div
>
</
asp:Content
>
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
PCSGroup.Freund;
using
Telerik.Web.UI;
public
partial
class
_default : Base
{
private
List<DateTime> dateRange =
new
List<DateTime>();
private
List<RegionalSales> allRegionalSales =
new
List<RegionalSales>();
private
List<FacilitySales> allFacilitySales =
new
List<FacilitySales>();
private
List<CompanySales> allCompanySales =
new
List<CompanySales>();
private
List<RadGrid> listOfGrids =
new
List<RadGrid>();
private
int
dashboardWidth = 235;
protected
override
void
OnInit(EventArgs e)
{
base
.OnInit(e);
int
count = 0;
while
(count < 5)
{
dateRange.Add(DateTime.Now.Date.AddDays(count));
count++;
}
foreach
(DateTime day
in
dateRange)
{
//loops through the region sales object and creates a list of regionalsales if any exist for that date
RegionalSales regionOrders =
new
RegionalSales(day);
allRegionalSales.AddRange(regionOrders.SelectOrders());
//loops through the facility sales object and creates a list of facilitysales if any exist for that date
FacilitySales facilityOrders =
new
FacilitySales(day);
allFacilitySales.AddRange(facilityOrders.SelectOrders());
//loops through the company sales object and creates a list of companysales if any exist for that date
CompanySales companyOrders =
new
CompanySales(day);
allCompanySales.AddRange(companyOrders.SelectOrders());
}
}
protected
override
void
OnLoad(EventArgs e)
{
base
.OnLoad(e);
Ticker.Interval = 3000;
foreach
(Region region
in
new
Region().SelectAllRegionsNotDeleted())
{
Panel gridWrapper =
new
Panel();
gridWrapper.Width = 250;
gridWrapper.CssClass =
"floatLeft"
;
Literal regionHead =
new
Literal();
regionHead.Text = String.Format(
"<h2>{0}</h2>"
, region.RegionName);
gridWrapper.Controls.Add(regionHead);
gridWrapper.Controls.Add(GetRegionChart(region.RegionID));
RegionGrids.Controls.Add(gridWrapper);
}
foreach
(Facility facility
in
new
Facility().SelectAllFacilitiesNotDeleted())
{
Literal facilityHead =
new
Literal();
facilityHead.Text = String.Format(
"<h2>{0}</h2>"
, facility.FacilityName);
FacilityGrids.Controls.Add(facilityHead);
FacilityGrids.Controls.Add(GetFacilityChart(facility.FacilityID));
}
foreach
(Company company
in
new
Company().SelectAllCompaniesNotDeleted().Where(i => i.CompanyID != 2).ToList())
{
Panel gridWrapper =
new
Panel();
gridWrapper.Width = 250;
gridWrapper.CssClass =
"floatLeft"
;
Literal companyHead =
new
Literal();
companyHead.Text = String.Format(
"<h2>{0}</h2>"
, company.CompanyName);
gridWrapper.Controls.Add(companyHead);
gridWrapper.Controls.Add(GetCompanyChart(company.CompanyID));
CompanyGrids.Controls.Add(gridWrapper);
}
}
protected
void
Company3_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
RadGrid company = listOfGrids.FirstOrDefault(i => i.ID ==
"Company_3"
);
company.DataSource = allCompanySales.Where(i => i.CompanyID == 3);
}
public
void
Ticker_Ticked(
object
sender, EventArgs e)
{
foreach
(RadGrid grid
in
listOfGrids)
{
grid.Rebind();
}
}
private
RadGrid GetRegionChart(
int
ID)
{
string
[] keys = {
"RegionID"
,
"DeliveryDate"
};
RadGrid thisView =
new
RadGrid();
thisView.CssClass =
"roundedCorners"
;
thisView.Skin = Skin;
thisView.Width = dashboardWidth;
thisView.AutoGenerateColumns =
false
;
thisView.GridLines = GridLines.None;
thisView.MasterTableView.Width = Unit.Percentage(100);
thisView.MasterTableView.NoMasterRecordsText =
string
.Empty;
thisView.MasterTableView.ClientDataKeyNames = keys;
thisView.ClientSettings.ClientEvents.OnRowClick =
"RegionRowClick"
;
thisView.DataSource = allRegionalSales.Where(i => i.RegionID == ID);
GridBoundColumn boundColumn;
boundColumn =
new
GridBoundColumn();
thisView.MasterTableView.Columns.Add(boundColumn);
boundColumn.DataField =
"DeliveryDate"
;
boundColumn.HeaderText =
"Date"
;
boundColumn.DataFormatString =
"{0:MM/dd}"
;
boundColumn =
new
GridBoundColumn();
thisView.MasterTableView.Columns.Add(boundColumn);
boundColumn.DataField =
"NewCount"
;
boundColumn.HeaderText =
"New"
;
boundColumn =
new
GridBoundColumn();
thisView.MasterTableView.Columns.Add(boundColumn);
boundColumn.DataField =
"RenewedCount"
;
boundColumn.HeaderText =
"Renewed"
;
boundColumn =
new
GridBoundColumn();
thisView.MasterTableView.Columns.Add(boundColumn);
boundColumn.DataField =
"CancelledCount"
;
boundColumn.HeaderText =
"Cancelled"
;
listOfGrids.Add(thisView);
return
thisView;
}
private
RadGrid GetFacilityChart(
int
ID)
{
string
[] keys = {
"FacilityID"
,
"DeliveryDate"
};
RadGrid thisView =
new
RadGrid();
thisView.CssClass =
"roundedCorners"
;
thisView.Skin = Skin;
thisView.Width = dashboardWidth;
thisView.AutoGenerateColumns =
false
;
thisView.GridLines = GridLines.None;
thisView.ID = String.Format(
"FacilityID_{0}"
, ID);
thisView.MasterTableView.Width = Unit.Percentage(100);
thisView.MasterTableView.NoMasterRecordsText =
string
.Empty;
thisView.MasterTableView.ClientDataKeyNames = keys;
thisView.ClientSettings.ClientEvents.OnRowClick =
"FacilityRowClick"
;
thisView.DataSource = allFacilitySales.Where(i => i.FacilityID == ID);
GridBoundColumn boundColumn;
boundColumn =
new
GridBoundColumn();
thisView.MasterTableView.Columns.Add(boundColumn);
boundColumn.DataField =
"DeliveryDate"
;
boundColumn.HeaderText =
"Date"
;
boundColumn.DataFormatString =
"{0:MM/dd}"
;
boundColumn =
new
GridBoundColumn();
thisView.MasterTableView.Columns.Add(boundColumn);
boundColumn.DataField =
"NewCount"
;
boundColumn.HeaderText =
"New"
;
boundColumn =
new
GridBoundColumn();
thisView.MasterTableView.Columns.Add(boundColumn);
boundColumn.DataField =
"RenewedCount"
;
boundColumn.HeaderText =
"Renewed"
;
boundColumn =
new
GridBoundColumn();
thisView.MasterTableView.Columns.Add(boundColumn);
boundColumn.DataField =
"CancelledCount"
;
boundColumn.HeaderText =
"Cancelled"
;
listOfGrids.Add(thisView);
return
thisView;
}
private
RadGrid GetCompanyChart(
int
ID)
{
string
[] keys = {
"CompanyID"
,
"DeliveryDate"
};
RadGrid thisView =
new
RadGrid();
thisView.CssClass =
"roundedCorners"
;
thisView.Skin = Skin;
thisView.Width = dashboardWidth;
thisView.AutoGenerateColumns =
false
;
thisView.GridLines = GridLines.None;
thisView.ID = String.Format(
"Company_{0}"
, ID);
thisView.MasterTableView.Width = Unit.Percentage(100);
thisView.MasterTableView.NoMasterRecordsText =
string
.Empty;
thisView.MasterTableView.ClientDataKeyNames = keys;
thisView.ClientSettings.ClientEvents.OnRowClick =
"CompanyRowClick"
;
/*
!!!! Here's the code that doesn't work !!!!
I am creating a reference to a method
that does makes my code very brittle.
*/
if
(ID == 3)
{
thisView.NeedDataSource +=
new
GridNeedDataSourceEventHandler(Company3_NeedDataSource);
}
RadAjaxManager1.DefaultLoadingPanelID =
"LoadingPanel1"
;
RadAjaxManager1.AjaxSettings.AddAjaxSetting(Ticker, thisView,
null
);
// End Broken Code
thisView.DataSource = allCompanySales.Where(i => i.CompanyID == ID);
GridBoundColumn boundColumn;
boundColumn =
new
GridBoundColumn();
thisView.MasterTableView.Columns.Add(boundColumn);
boundColumn.DataField =
"DeliveryDate"
;
boundColumn.HeaderText =
"Date"
;
boundColumn.DataFormatString =
"{0:MM/dd}"
;
boundColumn =
new
GridBoundColumn();
thisView.MasterTableView.Columns.Add(boundColumn);
boundColumn.DataField =
"NewCount"
;
boundColumn.HeaderText =
"New"
;
boundColumn =
new
GridBoundColumn();
thisView.MasterTableView.Columns.Add(boundColumn);
boundColumn.DataField =
"RenewedCount"
;
boundColumn.HeaderText =
"Renewed"
;
boundColumn =
new
GridBoundColumn();
thisView.MasterTableView.Columns.Add(boundColumn);
boundColumn.DataField =
"CancelledCount"
;
boundColumn.HeaderText =
"Cancelled"
;
listOfGrids.Add(thisView);
return
thisView;
}
}
Hello, in our project we use RadFilter Control.
This is a code from aspx file.
<
telerik:RadFilter
runat
=
"server"
ID
=
"VehicleGridRadFilter"
ShowApplyButton
=
"True"
FilterContainerID
=
"VehiclesRadGrid"
>
<
FieldEditors
>
<
telerik:RadFilterNumericFieldEditor
FieldName
=
"EmployeeID"
DataType
=
"System.Int32"
/>
</
telerik:RadFilterNumericFieldEditor
>
</
FieldEditors
>
<
telerik:RadGrid
ID
=
"VehiclesRadGrid"
runat
=
"server"
AllowSorting
=
"True"
AutoGenerateColumns
=
"False"
BackColor
=
"White"
BorderColor
=
"#c3c3c3"
BorderStyle
=
"Double"
BorderWidth
=
"1px"
CaptionAlign
=
"Bottom"
CellPadding
=
"3"
Width
=
"926px"
GridLines
=
"none"
AllowPaging
=
"true"
PageSize
=
"25"
OnNeedDataSource
=
"VehiclesRadGrid_NeedDataSource"
OnItemCommand
=
"VehiclesRadGrid_ItemCommand"
IsFilterItemExpanded
=
"false"
OnItemDataBound
=
"VehiclesRadGrid_ItemDataBound"
>
<
MasterTableView
DataKeyNames
=
"VehicleID"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"Year"
HeaderText="<%$Resources:PageContent,Global_Year %>" SortExpression="Year" DataType="System.Int32"
UniqueName="YearColumn" AllowFiltering="True">
<
ItemStyle
HorizontalAlign
=
"Center"
Wrap
=
"True"
CssClass
=
"cellStyleBoth"
/>
</
telerik:GridBoundColumn
>
…..
</
Columns
>
</
MasterTableView
>
<
ItemStyle
CssClass
=
"GridAlt"
Wrap
=
"True"
/>
<
SelectedItemStyle
BackColor
=
"#669999"
Font-Bold
=
"True"
ForeColor
=
"White"
/>
<
PagerStyle
CssClass
=
"GridPage"
AlwaysVisible
=
"true"
Position
=
"TopAndBottom"
/>
<
HeaderStyle
CssClass
=
"GridTitle"
/>
<
EditItemStyle
Wrap
=
"False"
/>
<
AlternatingItemStyle
CssClass
=
"GridAlt1"
/>
</
telerik:RadGrid
>
Year in our model is System.Int32 property.
1) How we can set Min/Max values for Year Filter? Or Catch momen when user input wrong value in filter?
1-st question received because if user set Filter value to 999999999999999999999, Filter controls set value to 70368744177664, but we receive error javascript console message on page with control (
We try play with this control on http://demos.telerik.com/aspnet-ajax/filter/examples/customeditors/defaultcs.aspx but if we insert 9999999999999999999999999 to EmployeeID filter, page show http://demos.telerik.com/ErrorPageResources/error.aspx?aspxerrorpath=/aspnet-ajax/filter/examples/customeditors/defaultcs.aspx
Thank you.
Hello
I'm using ASP.NET AJAX Q1 2012 version. When I put two RadAsyncUpload on one page, and try to set enabled property on false, i receive some JavaScript error. It's working when there is only one RadAsyncUpload control.
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
>
</
telerik:RadScriptManager
>
<
telerik:RadAsyncUpload
ID
=
"RadAsyncUpload1"
runat
=
"server"
>
</
telerik:RadAsyncUpload
>
<
telerik:RadAsyncUpload
ID
=
"RadAsyncUpload2"
runat
=
"server"
>
</
telerik:RadAsyncUpload
>
namespace
test1
{
public
partial
class
WebForm1 : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
RadAsyncUpload1.Enabled =
false
;
RadAsyncUpload2.Enabled =
false
;
}
}
}