GridViewマルチ条件フィルタデータ
4528 ワード
最近、gridviewのデータを多条件で選択する必要があり、比較的粗い解決策をdemoした.
以下で切り取るコードの一部にtoolName,lcs,purpose,versionはこれらのデータに基づいてgridviewを選択します.
コードの中でlinqを使う時に2つの数が等しいかどうかを判断するのに一番いいのは"=="で、もしequalsの方法で注意しなければならないならば、A.equals(B)、Aが空であればいかなる間違いも現れなくて、デバッグしてやっと間違いを発見することができて、linqの中のlamdaの表現式の内部が確かに1つの間違いを投げたため、しかしこの間違いをインタフェースに投げません.
以下で切り取るコードの一部にtoolName,lcs,purpose,versionはこれらのデータに基づいてgridviewを選択します.
コードの中でlinqを使う時に2つの数が等しいかどうかを判断するのに一番いいのは"=="で、もしequalsの方法で注意しなければならないならば、A.equals(B)、Aが空であればいかなる間違いも現れなくて、デバッグしてやっと間違いを発見することができて、linqの中のlamdaの表現式の内部が確かに1つの間違いを投げたため、しかしこの間違いをインタフェースに投げません.
private void Filter() {
string toolName = txtToolname.Text;
string lcs = ddlLifeCycle.SelectedValue;
string purpose = ddlPurpose.SelectedValue;
string version = ddlVersion.SelectedValue;
DataSet ds = ServiceIPM.GetTools(Infosys.AMW.Common.AppConstants.LoginName, Infosys.AMW.Common.AppConstants.ProjectCodeFromURL, Infosys.AMW.Common.AppConstants.TLPITEMTYPE);
//DataSet ds = GridViewExportUtil.GetToolsData();
DataTable dt = ds.Tables[0];
EnumerableRowCollection query=null;
if (IsDateSetNullOREmpty(ds))
{
if (!string.IsNullOrEmpty(toolName) && lcs != "select" && purpose != "select" && version != "select")
{
query = from data in dt.AsEnumerable()
where
data.Field("m__strToolName").ToUpper().Contains(toolName.ToUpper())
&& data.Field("m__strLCStage") == lcs
&& data.Field("m__strVersion") == version
&& data.Field("m__strPurpose") == purpose
select data;
}
else if (string.IsNullOrEmpty(toolName))
{
query = from data in dt.AsEnumerable()
where
data.Field("m__strLCStage") == (lcs)
|| data.Field("m__strVersion") == version
|| data.Field("m__strPurpose") == purpose
select data;
}
else
{
query = from data in dt.AsEnumerable()
where
(data.Field("m__strToolName").ToUpper().Contains(string.IsNullOrEmpty(toolName) ? null : (toolName.ToUpper()))
|| data.Field("m__strLCStage") == (lcs)
|| data.Field("m__strVersion") == version
|| data.Field("m__strPurpose") == purpose)
select data;
}
//return query == null ? null : query.AsDataView();
}
if (query != null)
{
BindDataViewToGV(query.AsDataView());
}
else { BindDataViewToGV(null); }
//return null;
}
private void BindDataViewToGV(DataView dv) {
if (dv != null && dv.Count > 0)
{
string sortExpression = gvPlanedTools.Attributes["SortExpression"];
string sortDirection = gvPlanedTools.Attributes["SortDirection"];
ViewState["PageCount"] = dv.Count.ToString();
if ((!string.IsNullOrEmpty(sortExpression)) && (!string.IsNullOrEmpty(sortDirection)))
{
dv.Sort = string.Format("{0} {1}", sortExpression, sortDirection);
}
gvPlanedTools.PageSize = Convert.ToInt32(ControlDrp);
gvPlanedTools.DataSource = dv;
gvPlanedTools.DataBind();
InitRecords();
SortForImage(gvPlanedTools.Attributes["SortDirection"], gvPlanedTools.Attributes["SortExpression"]);
}
else {
panShow.Visible = false;
panError.Visible = true;
lbError.Text = PageMessage.ERRORWEBSERVICEDATA;
}
//ViewState["PageCount"] = dv.Count.ToString();
//gvPlanedTools.DataSource = dv;
//gvPlanedTools.DataBind();
//InitRecords();
}