This is a migrated thread and some comments may be shown as answers.

RadGrid many Detail Tables with WebUserControl Issues

1 Answer 139 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Johnathan
Top achievements
Rank 1
Johnathan asked on 13 Apr 2012, 11:50 PM
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:
<%@ 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));
        }
    }
}

1 Answer, 1 is accepted

Sort by
0
Johnathan
Top achievements
Rank 1
answered on 18 Apr 2012, 08:40 PM
I still have no found a resolution to the matter above. Please advise.
Tags
Grid
Asked by
Johnathan
Top achievements
Rank 1
Answers by
Johnathan
Top achievements
Rank 1
Share this question
or