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)); } }}