Skip to content

Instantly share code, notes, and snippets.

@neo125874
Last active August 29, 2015 14:18
Show Gist options
  • Save neo125874/0f098e5b29b093face43 to your computer and use it in GitHub Desktop.
Save neo125874/0f098e5b29b093face43 to your computer and use it in GitHub Desktop.
pass dt & conditions to get the filtered data(For Data Column&Row)
public static DataTable GetReportFilter(List<TEUserObjectReportFilterModel> _ModelField, List<TEUserObjectReportFilterModel> _ModelContent, DataTable DtReport)
{
DataTable _dt = DtReport.Clone();
DataTable _dtreturn = new DataTable();
try
{
foreach (TEUserObjectReportFilterModel _ObjTmp in _ModelField)
{
try
{
_dtreturn.Columns.Add(_ObjTmp.strFilterField.ToString());
}
catch (System.Data.DuplicateNameException)
{
//duplicate column name do nothing
}
}
List<string> ListField = new List<string>();
for (int i = 0; i < _dtreturn.Columns.Count; i++)
{
ListField.Add(_dtreturn.Columns[i].ColumnName);
}
string[] strColumns = (String[])ListField.ToArray();
#region content
StringBuilder sb = new StringBuilder();
int j = 0;
foreach (TEUserObjectReportFilterModel tereport in _ModelContent)
{
if (j > 0)
{ sb.Append(" OR "); }//strFilterField(column), strFilterValue1(content)
sb.Append(tereport.strFilterField.ToString() + " IN ('" + TERM.strFilterValue1.ToString().Trim() + "')");
j++;
}
DtReport.DefaultView.RowFilter = sb.ToString();//default view: different dimensions to filter data
_dt = DtReport.DefaultView.ToTable(true, strColumns);
#endregion
#region field
_dtreturn.Merge(_dt, false, MissingSchemaAction.Ignore);
#endregion
}
catch (Exception e)
{
logger.Fatal("GetReportFilter:" + e.Message);
}
return _dtreturn;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment