The Setup: RadGrid, inside user control, that features several details tables. The grid view in question is the OrderNotesLevel. This user control is called from our research page.
The Problem: The user control OrderNotesEntry.ascx is throwing an error in the binding saying the dataitem doesn't contain property xxx. When I debug I see the dataitem has no properties in the collection at all. The error occurs when adding a new order note record.
Grid structure:
Order
- OrderDetails
--SKU
-Order Notes (for sales team) <- where my problem(s) are
ASPX:
ASPX EditForm UserControl:
User Control Code Behind:
The Problem: The user control OrderNotesEntry.ascx is throwing an error in the binding saying the dataitem doesn't contain property xxx. When I debug I see the dataitem has no properties in the collection at all. The error occurs when adding a new order note record.
Grid structure:
Order
- OrderDetails
--SKU
-Order Notes (for sales team) <- where my problem(s) are
ASPX:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Example.ascx.cs" Inherits="ExampleUC" %>
<
br
/>
<
telerik:RadAjaxPanel
ID
=
"rapExample"
runat
=
"server"
>
<
div
style
=
"display: none; visibility: hidden;"
>
<
asp:Label
ID
=
"lblOrderId"
runat
=
"server"
Text
=
"-1"
></
asp:Label
>
</
div
>
<
telerik:RadGrid
ID
=
"rgExample"
runat
=
"server"
Width
=
"1020px"
ShowStatusBar
=
"true"
AutoGenerateColumns
=
"False"
PageSize
=
"10"
AllowSorting
=
"True"
AllowMultiRowSelection
=
"False"
AllowPaging
=
"True"
OnDetailTableDataBind
=
"rgExample_DetailTableDataBind"
OnNeedDataSource
=
"rgExample_NeedDataSource"
OnPreRender
=
"rgExample_PreRender"
GridLines
=
"Horizontal"
OnItemDataBound
=
"rgExample_ItemDataBound"
OnUpdateCommand
=
"rgExample_UpdateCommand"
OnInsertCommand
=
"rgExample_InsertCommand"
OnDeleteCommand
=
"rgExample_DeleteCommand"
OnItemCommand
=
"rgExample_ItemCommand"
>
<
PagerStyle
Mode
=
"NumericPages"
></
PagerStyle
>
<
MasterTableView
Width
=
"100%"
DataKeyNames
=
"OrderId"
Name
=
"OrderLevel"
HierarchyDefaultExpanded
=
"true"
GroupLoadMode
=
"Client"
TableLayout
=
"Fixed"
>
<
Columns
>
<
telerik:GridBoundColumn
SortExpression
=
"OrderOwner"
HeaderText
=
"Order Owner"
DataField
=
"OrderOwner"
DataType
=
"System.String"
HeaderStyle-Width
=
"10em"
HeaderStyle-HorizontalAlign
=
"Center"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"OrderDate"
HeaderText
=
"Closed Date"
DataField
=
"OrderDateClosed"
DataType
=
"System.String"
HeaderStyle-Width
=
"5.5em"
HeaderStyle-HorizontalAlign
=
"Center"
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
SortExpression
=
"OrderFactors"
HeaderText
=
"Order Risk Factor"
DataField
=
"OrderRiskFactor"
DataType
=
"System.String"
HeaderStyle-Width
=
"9.0em"
HeaderStyle-HorizontalAlign
=
"Center"
>
<
ItemTemplate
>
<
div
class='<%#Eval("OrderFactorColor")%>'>
<
asp:Label
ID
=
"lblOrderFactor"
runat
=
"server"
Text='<%#Eval("OrderFactor")%>'></
asp:Label
>
</
div
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
<
DetailTables
>
<
telerik:GridTableView
DataKeyNames
=
"DetailCode"
Name
=
"DetailLevel"
Width
=
"100%"
HierarchyDefaultExpanded
=
"true"
GridLines
=
"None"
AllowPaging
=
"false"
>
<
Columns
>
<
telerik:GridBoundColumn
SortExpression
=
"DetailCode"
HeaderText
=
"DetailCode"
DataField
=
"DetailCode"
DataType
=
"System.String"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"DetailDescr"
HeaderText
=
"Description"
DataField
=
"DetailDescr"
DataType
=
"System.String"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"DetailDate"
HeaderText
=
"First Treatment Date"
DataField
=
"DetailDate"
DataFormatString
=
"{0:d}"
DataType
=
"System.DateTime"
HeaderStyle-Width
=
"6em"
>
</
telerik:GridBoundColumn
>
</
Columns
>
<
DetailTables
>
<
telerik:GridTableView
DataKeyNames
=
"Id"
Name
=
"SKULevel"
Width
=
"100%"
HierarchyDefaultExpanded
=
"true"
CellPadding
=
"5"
GridLines
=
"None"
AllowPaging
=
"false"
>
<
Columns
>
<
telerik:GridBoundColumn
SortExpression
=
"SKUDate"
HeaderText
=
"Date"
DataField
=
"SKUDate"
DataFormatString
=
"{0:d}"
DataType
=
"System.DateTime"
HeaderStyle-Width
=
"30px"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"ReqType"
HeaderText
=
"Req Type"
DataField
=
"ReqType"
DataType
=
"System.String"
HeaderStyle-Width
=
"200px"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"Quantity"
HeaderText
=
"Quantity"
DataField
=
"Quantity"
DataType
=
"System.String"
HeaderStyle-Width
=
"75px"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"EstCosts"
HeaderText
=
"Est $$$"
DataField
=
"EstCosts"
DataType
=
"System.Decimal"
HeaderStyle-Width
=
"50px"
>
</
telerik:GridBoundColumn
>
</
Columns
>
<
NoRecordsTemplate
>
<
p
class
=
"ExampleNoRecords"
>
No Protocol Requests have been created.</
p
>
</
NoRecordsTemplate
>
</
telerik:GridTableView
>
</
DetailTables
>
<
NoRecordsTemplate
>
<
p
class
=
"ExampleNoRecords"
>
No Details have been asscoiated with the Order.</
p
>
</
NoRecordsTemplate
>
</
telerik:GridTableView
>
<%-- Grid that is causing me problems --%>
<
telerik:GridTableView
DataKeyNames
=
"OrderNotesId"
Name
=
"OrderNotesLevel"
Width
=
"100%"
HierarchyDefaultExpanded
=
"False"
AllowPaging
=
"false"
CellPadding
=
"5"
GridLines
=
"None"
>
<
Columns
>
<
telerik:GridEditCommandColumn
ButtonType
=
"ImageButton"
UniqueName
=
"EditCommandColumn2"
>
<
HeaderStyle
Width
=
"20px"
/>
<
ItemStyle
CssClass
=
"MyImageButton"
/>
</
telerik:GridEditCommandColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"OrderNotesId"
HeaderText
=
"#"
DataField
=
"OrderNotesId"
DataType
=
"System.String"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"ReportDate"
HeaderText
=
"Report Date"
DataField
=
"ReportDate"
DataFormatString
=
"{0:d}"
DataType
=
"System.DateTime"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
SortExpression
=
"OrderGoals"
HeaderText
=
"Goals"
DataField
=
"OrderGoals"
DataType
=
"System.String"
>
</
telerik:GridBoundColumn
>
</
Columns
>
<
NoRecordsTemplate
>
<
p
class
=
"ExampleNoRecords"
>
No historical Action Steps have been created.</
p
>
</
NoRecordsTemplate
>
<
EditFormSettings
UserControlName
=
"~/UserControls/OrderNotesEntry.ascx"
EditFormType
=
"WebUserControl"
>
<
EditColumn
UniqueName
=
"EditCommandColumn1"
>
</
EditColumn
>
</
EditFormSettings
>
</
telerik:GridTableView
>
</
DetailTables
>
<
NoRecordsTemplate
>
<
p
class
=
"ExampleNoRecords"
>
No Order Note data available.</
p
>
</
NoRecordsTemplate
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
telerik:RadAjaxPanel
>
ASPX EditForm UserControl:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="OrderNotesEntry.ascx.cs"
Inherits="Usercontrols_OrderNotesEntry" %>
<
asp:Panel
ID
=
"pnlOrderNoteEntry"
runat
=
"server"
>
<
div
class
=
"OrderHighlight"
style
=
"visibility: hidden; display: none;"
>
Id:
<
asp:Label
ID
=
"lblOrderNoteId"
runat
=
"server"
Text='<%# DataBinder.Eval( Container, "DataItem.OrderNoteId" ) %>' /></
asp:Label
>
</
div
>
<
div
class
=
"OrderHighlight"
>
<
table
style
=
"text-align: left;"
width
=
"99%"
>
<
tr
>
<
th
class
=
"DDSubHeader"
style
=
"width:150px;"
>
Date:
</
th
>
<
td
>
<
telerik:RadDatePicker
ID
=
"rdpDate"
runat
=
"server"
ZIndex
=
"30001"
DateInput-DateFormat
=
"MM/dd/yyyy"
DbSelectedDate='<%# DataBinder.Eval( Container, "DataItem.OrderDate" ) %>' />
</
td
>
<
th
class
=
"DDSubHeader"
style
=
"width:150px;"
>
Next Report Date:
</
th
>
<
td
>
<
asp:RadioButtonList
ID
=
"rblNextOrderDate"
RepeatDirection
=
"Horizontal"
runat
=
"server"
RepeatColumns
=
"4"
OnDataBound
=
"rblNextOrderDate_DataBound"
>
</
asp:RadioButtonList
>
<
telerik:RadDatePicker
ID
=
"rdpNextDate"
runat
=
"server"
ZIndex
=
"30001"
DateInput-DateFormat
=
"MM/dd/yyyy"
DbSelectedDate='<%# DataBinder.Eval( Container, "DataItem.NextOrderDate" ) %>' />
</
td
>
</
tr
>
</
table
>
</
div
>
<
br
/>
<
div
class
=
"OrderHighlight"
>
Goals:
<
telerik:RadTextBox
ID
=
"rtbManagementGoals"
runat
=
"server"
TextMode
=
"MultiLine"
Width
=
"99%"
Height
=
"60px"
Text='<%# DataBinder.Eval( Container, "DataItem.OrderGoals" ) %>'
MaxLength="500">
</
telerik:RadTextBox
>
</
div
>
<
asp:Button
ID
=
"btnUpdate"
Text
=
"Update"
runat
=
"server"
CommandName
=
"Update"
Visible='<%# !(DataItem is Telerik.Web.UI.GridInsertionObject) %>'>
</
asp:Button
>
<
asp:Button
ID
=
"btnInsert"
Text
=
"Insert"
runat
=
"server"
CommandName
=
"PerformInsert"
Visible='<%# DataItem is Telerik.Web.UI.GridInsertionObject %>'></
asp:Button
>
<
asp:Button
ID
=
"btnCancel"
Text
=
"Cancel"
runat
=
"server"
CausesValidation
=
"False"
CommandName
=
"Cancel"
></
asp:Button
>
</
asp:Panel
>
User Control Code Behind:
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
public
partial
class
Usercontrols_OrderNotesEntry : System.Web.UI.UserControl
{
private
object
_dataItem =
null
;
public
object
DataItem
{
get
{
return
this
._dataItem;
}
set
{
this
._dataItem = value;
}
}
private
Dictionary<
string
,
int
> DateRanges()
{
Dictionary<
string
,
int
> dict =
new
Dictionary<
string
,
int
>();
dict.Add(
"Custom"
, -1);
dict.Add(
"30"
, 30);
dict.Add(
"60"
, 60);
dict.Add(
"90"
, 90);
return
dict;
}
protected
void
Page_Init(
object
sender, EventArgs e)
{
this
.DataBinding +=
new
System.EventHandler(
this
.OrderNotesEntry_DataBinding);
}
protected
void
OrderNotesEntry_DataBinding(
object
sender, System.EventArgs e)
{
Dictionary<
string
,
int
> dict = DateRanges();
rblNextReportDate.DataSource = dict;
rblNextReportDate.DataTextField =
"Key"
;
rblNextReportDate.DataValueField =
"Value"
;
rblNextReportDate.DataBind();
}
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
protected
void
rblNextReportDate_DataBound(
object
sender, EventArgs e)
{
RadioButtonList rbl = sender
as
RadioButtonList;
foreach
(ListItem li
in
rbl.Items)
{
li.Attributes.Add(
"onclick"
,
string
.Format(
"javascript:pds('{0}', '{1}')"
, rbl.ClientID, li.Value));
}
}
}