Hi,
I am working on a form that requires a detail grid view for each Grid object. I have made a main OrderView Grid which just shows the dates for the orders and a child grid that should get the OrderDate from the Parent grid and show orders just for the selected Date in the parent grid. the OrderDate is common between both grids, but when I try to pass in the OrderDate to the child grid as a select param for the Object data source it always comes out something like '1/1'0001' and does not pass in the correct date from the parent grid. I am attaching my sample project as a file along with, I looked at the example at http://demos.telerik.com/aspnet-ajax/grid/examples/programming/detailtabledatabind/defaultcs.aspx
to do this. Can someone please show me how to do this with an example in code? Your helps appreciated thanks.
ASPX PAGE:
<
telerik:RadGrid
runat
=
"server"
ID
=
"grdOrderDates"
Width
=
"750px"
Height
=
"100%"
AllowPaging
=
"true"
AllowSorting
=
"true"
EnableLinqExpressions
=
"false"
ShowFooter
=
"true"
ondetailtabledatabind
=
"grdOrderDates_DetailTableDataBind"
>
<
PagerStyle
Mode
=
"NextPrevAndNumeric"
/>
<
MasterTableView
AutoGenerateColumns
=
"false"
AllowAutomaticDeletes
=
"true"
AllowAutomaticInserts
=
"true"
AllowAutomaticUpdates
=
"true"
InsertItemPageIndexAction
=
"ShowItemOnCurrentPage"
DataKeyNames
=
"OrderDate"
CommandItemDisplay
=
"Top"
EditMode
=
"PopUp"
AllowMultiColumnSorting
=
"true"
OverrideDataSourceControlSorting
=
"true"
AllowFilteringByColumn
=
"true"
FilterItemStyle-HorizontalAlign
=
"Left"
ShowFooter
=
"true"
ShowHeader
=
"true"
HierarchyLoadMode
=
"ServerOnDemand"
>
<
CommandItemSettings
AddNewRecordText
=
""
/>
<
RowIndicatorColumn
FilterControlAltText
=
"Filter RowIndicator column"
>
</
RowIndicatorColumn
>
<
ExpandCollapseColumn
FilterControlAltText
=
"Filter ExpandColumn column"
>
</
ExpandCollapseColumn
>
<
DetailTables
>
<
telerik:GridTableView
AutoGenerateColumns
=
"false"
DataKeyNames
=
"OrderDate"
DataSourceID
=
"ODSOrders"
>
<
ParentTableRelation
>
<
telerik:GridRelationFields
DetailKeyField
=
"Date"
MasterKeyField
=
"OrderDate"
/>
</
ParentTableRelation
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"Date"
HeaderText
=
"OrderDate"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"OrderID"
HeaderText
=
"OrderID"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Customer"
HeaderText
=
"Customer"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Location"
HeaderText
=
"Location"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Destination"
HeaderText
=
"Destination"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Quantity"
HeaderText
=
"Quantity"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"QuantityRemaining"
HeaderText
=
"Quantity Remaining"
></
telerik:GridBoundColumn
>
</
Columns
>
</
telerik:GridTableView
>
</
DetailTables
>
<
Columns
>
<
telerik:GridEditCommandColumn
ButtonType
=
"ImageButton"
UniqueName
=
"EditCommandColumn"
>
<
HeaderStyle
></
HeaderStyle
>
</
telerik:GridEditCommandColumn
>
<
telerik:GridBoundColumn
DataField
=
"OrderDate"
UniqueName
=
"OrderDate"
HeaderText
=
"Order Date"
/>
</
Columns
>
</
MasterTableView
>
<
GroupingSettings
CaseSensitive
=
"False"
/>
</
telerik:RadGrid
>
</
div
>
<
asp:ObjectDataSource
ID
=
"ODSOrderList"
runat
=
"server"
TypeName
=
"DAL.OrderRepository"
DataObjectTypeName
=
"DAL.OrderView"
SelectMethod
=
"getOrderDatesinRange"
onselecting
=
"ODSOrderList_Selecting"
>
<
SelectParameters
>
<
asp:Parameter
Name
=
"StartDate"
DbType
=
"DateTime"
/>
<
asp:Parameter
Name
=
"EndDate"
DbType
=
"DateTime"
/>
</
SelectParameters
>
</
asp:ObjectDataSource
>
<
asp:ObjectDataSource
ID
=
"ODSOrders"
runat
=
"server"
TypeName
=
"DAL.OrderRepository"
DataObjectTypeName
=
"DAL.Order"
SelectMethod
=
"getOrderListinRange"
>
<
SelectParameters
>
<
asp:SessionParameter
Name
=
"orderDate"
SessionField
=
"OrderDate"
DbType
=
"DateTime"
/>
</
SelectParameters
>
</
asp:ObjectDataSource
>
</
asp:Content
>
C# Code :
protected void Page_Load(object sender, EventArgs e)
{
}
public void LoadOrdersByDate()
{
//Loads Parent Grid when date range for Orders is given and binds Parent grid
grdOrderDates.DataSourceID = "ODSOrderList";
grdOrderDates.DataBind();
}
protected void ODSOrderList_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
e.InputParameters["StartDate"] = CalStartDate.SelectedDate;
e.InputParameters["EndDate"] = CalEndDate.SelectedDate;
}
protected void BtnSubmit_Click(object sender, EventArgs e)
{
//Loads Parent Grid when date range for Orders is given and binds Parent grid
LoadOrdersByDate();
}
protected void grdOrderDates_DetailTableDataBind(object sender, Telerik.Web.UI.GridDetailTableDataBindEventArgs e)
{
try
{
GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem;
DateTime orderDate = Convert.ToDateTime(dataItem.GetDataKeyValue("OrderDate"));
e.DetailTableView.DataSourceID = "ODSOrders";
//Pass in the OrderDate value from the Parent grid so the child grid only shows Orders for the selected Date
ODSOrders.SelectParameters["orderDate"].DefaultValue = orderDate.ToString();
e.DetailTableView.DataBind();
}
catch (Exception ex)
{
throw ex;
}
}