I arranged my "things to do"
and now I need tow things
1. have the ability to filter the child rows
2. have the ability to filter the items in the ComboBoxColumn of the child grid
I think to do it in the OnChildGridLoaded
when I get to it the value in the ((RadGridView)sender).ItemsSource
is {System.Linq.Enumerable.WhereEnumerableIterator<System.Data.DataRow>}
how can I filter it? or is there another way to filter
and now I need tow things
1. have the ability to filter the child rows
2. have the ability to filter the items in the ComboBoxColumn of the child grid
I think to do it in the OnChildGridLoaded
when I get to it the value in the ((RadGridView)sender).ItemsSource
is {System.Linq.Enumerable.WhereEnumerableIterator<System.Data.DataRow>}
how can I filter it? or is there another way to filter
private void BindDataMainGrid() |
{ |
try |
{ |
thisthis.gvAccount.ItemsSource = this.GetData(); |
} |
catch{} |
} |
private DataSet GetData() |
{ |
try |
{ |
dsb = ServiceData.GetBudgetsByOBS(iOBSID); |
if (dsb != null) |
{ |
dsb.Tables["Budget"].Columns.Add("SumBudgetAllocation", typeof(float)); |
dsb.Tables["Budget"].Columns.Add("SumBudgetRequest", typeof(float)); |
dsb.Tables["Budget"].Columns.Add("SumOrderAllocation", typeof(float)); |
dsb.Tables["Budget"].Columns.Add("SumOrderPaid", typeof(float)); |
foreach (DataRow dr in dsb.Tables["Budget"].Rows) |
{ |
dr["RowStatus"] = 0; |
if (dsb.Tables["BudgetAllocation"].Select("id=" + Convert.ToInt32(dr["ID"])).GetLength(0) > 0) |
{ |
dr["SumBudgetAllocation"] = Convert.ToDecimal(((LM_Model.dsBudget.BudgetAllocationRow)dsb.Tables["BudgetAllocation"].Select("id=" + Convert.ToInt32(dr["ID"]))[0]).ItemArray[1]); |
} |
if (dsb.Tables["BudgetRequest"].Select("BudgetId=" + Convert.ToInt32(dr["ID"])).GetLength(0) > 0) |
{ |
dr["SumBudgetRequest"] = Convert.ToDecimal(((LM_Model.dsBudget.BudgetRequestRow)dsb.Tables["BudgetRequest"].Select("BudgetId=" + Convert.ToInt32(dr["ID"]))[0]).ItemArray[1]); |
} |
if (dsb.Tables["BudgetOrder"].Select("BudgetId=" + Convert.ToInt32(dr["ID"])).GetLength(0) > 0) |
{ |
dr["SumOrderAllocation"] = Convert.ToDecimal(((LM_Model.dsBudget.BudgetOrderRow)dsb.Tables["BudgetOrder"].Select("BudgetId=" + Convert.ToInt32(dr["ID"]))[0]).ItemArray[1]); |
} |
if (dsb.Tables["BudgetOrderPaid"].Select("Id=" + Convert.ToInt32(dr["ID"])).GetLength(0) > 0) |
{ |
dr["SumOrderPaid"] = Convert.ToDecimal(((LM_Model.dsBudget.BudgetOrderPaidRow)dsb.Tables["BudgetOrderPaid"].Select("Id=" + Convert.ToInt32(dr["ID"]))[0]).ItemArray[1]); |
} |
} |
dsb.Tables["Budget"].Columns.Add("BalanceBudgetAllocation", typeof(float), "TotalBudget-SumBudgetAllocation"); |
dsb.Tables["Budget"].Columns.Add("BalanceToPay", typeof(float), "SumBudgetRequest-SumOrderPaid"); |
//Build dsAcoount |
dsAcoount = new DataSet(); |
DataView dv = new DataView(dsb.Tables["Budget"], "Type=1", "", DataViewRowState.CurrentRows); |
dsAcoount.Tables.Add((DataTable)dv.ToTable("Account")); |
dv = new DataView(dsb.Tables["Budget"], "Type=2", "", DataViewRowState.CurrentRows); |
dsAcoount.Tables.Add((DataTable)dv.ToTable("Budget")); |
dv = new DataView(dsb.Tables["Budget"], "Type=3", "", DataViewRowState.CurrentRows); |
dsAcoount.Tables.Add((DataTable)dv.ToTable("SubBudget")); |
LM_Model.clsEnums.BudgetType eVal = clsEnums.BudgetType.Investment; |
decimal dCurrentInvestment = Convert.ToDecimal(dsAcoount.Tables["Account"].Compute("SUM(TotalBudget)", "BudgetType=" + Convert.ToInt32(eVal))); |
txtbInvestmentSum.Text = dCurrentInvestment.ToString("#,##0.00"); |
eVal = clsEnums.BudgetType.Continuous; |
decimal dCurrentContinues = Convert.ToDecimal(dsAcoount.Tables["Account"].Compute("SUM(TotalBudget)", "BudgetType=" + Convert.ToInt32(eVal))); |
txtbContinuesSum.Text = dCurrentContinues.ToString("#,##0.00"); |
decimal dInvestmentBaseline = Convert.ToDecimal(dsb.Tables["BaselineBudget"].Rows[0]["InvestmentBaseline"]); |
decimal dContinuesBaseline = Convert.ToDecimal(dsb.Tables["BaselineBudget"].Rows[0]["ContinuesBaseline"]); |
decimal dI = (dCurrentInvestment / dInvestmentBaseline - 1) * 100; |
decimal dC = (dCurrentContinues / dContinuesBaseline - 1) * 100; |
txtInv.Text = dI.ToString("#.00"); |
txtCon.Text = dC.ToString("#.00"); |
DateTime dDate = (DateTime)dsb.Tables["BaselineBudget"].Rows[0]["Date"]; |
txtBLDate.Text = dDate.ToString("dd/MM/yyyy"); |
//Add Relations |
dsAcoount.Relations.Add("BudgetRelation", |
dsAcoount.Tables["Account"].Columns["Number"], |
dsAcoount.Tables["Budget"].Columns["ParentID"]); |
dsAcoount.Relations.Add("SubBudgetRelation", |
dsAcoount.Tables["Budget"].Columns["Number"], |
dsAcoount.Tables["SubBudget"].Columns["ParentID"]); |
return dsAcoount; |
} |
} |
catch { } |
return null; |
} |