I have setup grid view according to the information and my own logic, but i have some issues,
MasterTemplate populated, Child is not Populating.
What I'm doing is.
private
void
frmSaleListPending_Load(
object
sender, EventArgs e)
{
DataSet dataSet = CreateDataSet();
this
.MasterBindingSource.DataSource = dataSet;
this
.MasterBindingSource.DataMember =
"SALES_M"
;
this
.DetailBindingSource.DataSource = dataSet;
this
.DetailBindingSource.DataMember =
"SALES_D"
;
GridViewTemplate childTemplate = CreateChildTemplate();
this
.radGridView1.Templates.Add(childTemplate);
this
.radGridView1.DataSource =
this
.MasterBindingSource;
this
.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
this
.radGridView1.RowSourceNeeded +=
new
GridViewRowSourceNeededEventHandler(radGridView1_RowSourceNeeded);
}
private
DataSet CreateDataSet()
{
DataSet ds =
new
DataSet();
ds.Tables.Add(saleRepo.GetSaleDataQuery(
"Select * from Sales_m where status = 0"
));
ds.Tables[0].TableName =
"SALES_M"
;
ds.Tables.Add(saleRepo.GetSaleDataQuery(
"Select * from Sales_d"
));
ds.Tables[1].TableName =
"SALES_D"
;
DataRelation dataRelation;
dataRelation =
new
DataRelation(
"SALES_M_SALES_D"
,ds.Tables[
"SALES_M"
].Columns[
"SMID"
], ds.Tables[
"SALES_D"
].Columns[
"SMID"
]);
return
ds;
}
private
GridViewTemplate CreateChildTemplate()
{
GridViewTemplate template =
new
GridViewTemplate();
template.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
GridViewTextBoxColumn Columnid =
new
GridViewTextBoxColumn
{
Name =
"smid"
,
HeaderText =
"smid"
,
FieldName =
"smid"
,
Width = 60,
IsVisible =
false
,
HeaderTextAlignment = ContentAlignment.MiddleCenter,
TextAlignment = ContentAlignment.MiddleCenter
};
GridViewTextBoxColumn ColumnSrNo =
new
GridViewTextBoxColumn
{
Name =
"sr_no"
,
HeaderText =
"Sr #"
,
FieldName =
"sr_no"
,
Width = 60,
HeaderTextAlignment = ContentAlignment.MiddleCenter,
TextAlignment = ContentAlignment.MiddleCenter
};
GridViewTextBoxColumn ColumnAlias =
new
GridViewTextBoxColumn
{
Name =
"Alias_Name"
,
HeaderText =
"Alias"
,
FieldName =
"Alias_name"
,
Width = 100,
HeaderTextAlignment = ContentAlignment.MiddleCenter,
TextAlignment = ContentAlignment.MiddleCenter
};
GridViewTextBoxColumn ColumnItemCode =
new
GridViewTextBoxColumn
{
Name =
"Item_Code"
,
HeaderText =
"Code"
,
FieldName =
"Item_Code"
,
Width = 100,
IsVisible =
false
,
HeaderTextAlignment = ContentAlignment.MiddleCenter,
TextAlignment = ContentAlignment.MiddleCenter
};
GridViewTextBoxColumn ColumnItemName =
new
GridViewTextBoxColumn
{
Name =
"Item_Name"
,
HeaderText =
"Item Description"
,
FieldName =
"Item_Name"
,
Width = 300,
HeaderTextAlignment = ContentAlignment.MiddleLeft,
TextAlignment = ContentAlignment.MiddleLeft
};
GridViewTextBoxColumn ColumnUOM =
new
GridViewTextBoxColumn
{
Name =
"ABBR"
,
HeaderText =
"M-Unit"
,
FieldName =
"ABBR"
,
Width = 50,
HeaderTextAlignment = ContentAlignment.MiddleLeft,
TextAlignment = ContentAlignment.MiddleLeft
};
GridViewDecimalColumn ColumnSaleRate =
new
GridViewDecimalColumn
{
Name =
"Sale_Rate"
,
HeaderText =
"Unit Price"
,
FieldName =
"Sale_Rate"
,
Width = 120,
FormatString =
"{0:N2}"
,
HeaderTextAlignment = ContentAlignment.MiddleRight,
TextAlignment = ContentAlignment.MiddleRight
};
GridViewDecimalColumn ColumnSaleQty =
new
GridViewDecimalColumn
{
Name =
"Qty"
,
HeaderText =
"Quantity"
,
FieldName =
"Qty"
,
Width = 120,
FormatString =
"{0:N2}"
,
HeaderTextAlignment = ContentAlignment.MiddleRight,
TextAlignment = ContentAlignment.MiddleRight
};
GridViewDecimalColumn ColumnItAmnt =
new
GridViewDecimalColumn
{
Name =
"itamnt"
,
HeaderText =
"Item Amnt"
,
FieldName =
"itamnt"
,
Width = 120,
FormatString =
"{0:N2}"
,
HeaderTextAlignment = ContentAlignment.MiddleRight,
TextAlignment = ContentAlignment.MiddleRight
};
GridViewDecimalColumn ColumnAmount =
new
GridViewDecimalColumn
{
Name =
"itfinalamnt"
,
HeaderText =
"Total Value"
,
FieldName =
"itfinalamnt"
,
Width = 120,
FormatString =
"{0:N2}"
,
HeaderTextAlignment = ContentAlignment.MiddleRight,
TextAlignment = ContentAlignment.MiddleRight
};
template.Columns.AddRange(Columnid,ColumnSrNo, ColumnAlias,
ColumnItemCode,
ColumnItemName,
ColumnUOM,
ColumnSaleRate,
ColumnSaleQty,
ColumnItAmnt,
ColumnAmount);
return
template;
}
private
void
radGridView1_RowSourceNeeded(
object
sender, GridViewRowSourceNeededEventArgs e)
{
DataRowView rowView = e.ParentRow.DataBoundItem
as
DataRowView;
DataRow[] rows = rowView.Row.GetChildRows(
"SALES_M_SALES_D"
);
//Relation Name
foreach
(DataRow dataRow
in
rows)
{
GridViewRowInfo row = e.Template.Rows.NewRow();
row.Cells[
"sr_no"
].Value = dataRow[
"sr_no"
];
row.Cells[
"Item_code"
].Value = dataRow[
"Item_code"
];
row.Cells[
"alias_Name"
].Value = dataRow[
"alias_Name"
];
row.Cells[
"Item_Name"
].Value = dataRow[
"Item_Name"
];
row.Cells[
"smid"
].Value = dataRow[
"smid"
];
row.Cells[
"Sale_Rate"
].Value = dataRow[
"sale_rate"
];
row.Cells[
"qty"
].Value = dataRow[
"qty"
];
row.Cells[
"itamnt"
].Value = dataRow[
"itamnt"
];
row.Cells[
"itfinalamnt"
].Value = dataRow[
"itfinalamnt"
];
e.SourceCollection.Add(row);
}
}
Please check what I'm doing wrong.
I have debug my code, both the tables with data are available in the dataset.
I think I'm Doing something wrong with creating relation between tables.