ドロップダウンリストを使用して検索結果を分割でフィルタリングする検索フィールドがあります。
私はついにそれをうまく機能させました、しかし今私はこれを否定するためにすべてのオプションを作りたいです。ドロップダウン値はintと同じです。私はまだ学んでいるので、これについて頭を悩ませることができる唯一の方法は、whereクエリのifelseステートメントです。私がそれをしたとき、私はたくさんの赤を見ました。
ドロップダウンリストには5つのオプションがあります。値は1から5です。5=すべて。基本的に除算による検索をやめるか、t0.DivisionID == DDLInt &&
string DDL = DDLAddDivision.SelectedValue;
int DDLInt;
if (int.TryParse(DDL, out DDLInt))
{
int searchID;
if (!int.TryParse(txtSearch.Text.Trim(), out searchID))
searchID = -1; // set to an invalid ID
ItemContext db = new ItemContext();
var q = (from t0 in db.Item
join t1 in db.Categories on t0.CategoryID equals t1.CategoryID
join t2 in db.Divisions on t0.DivisionID equals t2.DivisionID
where
t0.DivisionID == DDLInt &&
//Contains
(
t0.ItemName.Contains(txtSearch.Text.Trim()) ||
t0.Email.Contains(txtSearch.Text.Trim()) ||
t0.Description.Contains(txtSearch.Text.Trim()) ||
t0.Phone.Contains(txtSearch.Text.Trim()) ||
t0.ItemID.Equals(searchID)
)
group t0 by new
{
t0.ItemID,
t0.ItemName,
t0.Description,
t0.Phone,
t0.Email,
t0.DivisionID,
t0.CategoryID,
t1.CategoryName,
t2.DivisionName
} into i
select new
{
i.Key.ItemID,
i.Key.ItemName,
i.Key.Description,
i.Key.Email,
i.Key.Phone,
i.Key.CategoryName,
i.Key.DivisionName,
i.Key.CategoryID,
i.Key.DivisionID
});
if (q.Any() == false)
{
ResultsLabelId.Visible = true;
}
else
{
ResultsLabelId.Visible = false;
}
//bind and return
lv.DataSource = q.ToList();
lv.DataBind();
助けてくれてありがとう!