2017-03-06 65 views
1

我有一個包含兩個外部頁面(@ {Html.RenderAction)的View頁面。 所有3頁都有一個控制器。默認情況下,我從MSSQL數據庫中獲取所有數據,並得到結果。現在我需要按日期篩選結果,並在一些日期之間取得結果。如何在兩個日期之間進行搜索

下面是搜索表單的HTML代碼:

@using (Html.BeginForm("Reporti", "Reporti", null, FormMethod.Get)) 
    { 
    <table border="0" cellspacing="5" cellpadding="5"> 
     <tbody> 
      <tr> 
       <td>Od Datum:</td> 
       <td><input type="text" id="datumOD" name="datumOD" class="datumOD"></td> 
      </tr> 
      <tr> 
       <td>Do Datum:</td> 
       <td><input type="text" id="max" name="datumDO" class="datumDO"></td> 
      </tr> 
      <tr> 
       <td></td> 
       <td><input type="submit" value="Baraj" /></td> 
      </tr> 
     </tbody> 
    </table> 
} 

頁面的網址是:H **號碼://本地主機:41777/Reporti/Reporti

後點擊搜索按鈕我有這個URL

ħ**號碼://本地主機:41777/Reporti/Reporti datumOD = 2017年3月1日& datumDO = 2017年3月2日

這裏是控制器的代碼

public ActionResult Reporti(string filter, DateTime? datumOD, DateTime? datumDO) 
    { 
     Session["invoiceFrom"] = datumOD; 
     Session["invoiceTo"] = datumDO; 


     return View(); 
    } 
    public ActionResult reportIZ(DateTime? datumOD, DateTime? datumDO) 
    { 
     var smetkis = db.smetkis.Include(s => s.firmi); 
     return View(smetkis.ToList()); 
    } 

    public ActionResult Report(DateTime? datumOD, DateTime? datumDO) 
    { 
     var ponudis = db.ponudis.Include(s => s.ponudaDets).Where(x => x.odobreno); 
     return View(ponudis.ToList()); 
    } 

我的問題是,如何實現代碼公衆的ActionResult Reporti過濾日期之間的結果。如果您需要從一次你應該使用Union 2個表中獲取數據

public ActionResult Reporti(DateTime? datumOD, DateTime? datumDO) 
{ 
    var ponudis = db.ponudis.Include(s => s.ponudaDets).AsQueryable(); 
    if(datumOD.HasValue) //If we have date - add condition 
     ponudis = ponudis.Where(x => x.odobreno >= datumOD); 
    if(datumDO.HasValue) //If we have date - add condition 
     ponudis = ponudis.Where(x => x.odobreno <= datumDO); 
    return View(ponudis.ToList()); 
} 

+0

胡亂猜測的基礎上,稀疏的信息你給:'VAR filteredResult = db.Whatever.Where(X => X。 datumOD> = datumOD && x.datumDO <= datumDO).ToList()' –

+0

是否可以從兩個表中過濾,例如。 ponudis和smetkis在一起? – Xelmep

回答

0

只需添加另一個條件。但是如果你的表格有不同的結構,你應該創建一個單獨的類,如RowViewModel。像這樣:

public class RowViewModel 
{ 
    public int Id {get; set;} 
    public int DateTime? Odobreno {get; set;} 
    //your other properties 
} 

然後在你的控制器:

public ActionResult Reporti(DateTime? datumOD, DateTime? datumDO) 
{ 
    var ponudis = db.ponudis.Include(s => s.ponudaDets).AsQueryable(); 
    var smetkis = db.smetkis.Include(s => s.firmi).AsQueryable(); 
    if(datumOD.HasValue) //If we have date - add condition 
    { 
     smetkis = smetkis.Where(x => x.odobreno >= datumOD); 
     ponudis = ponudis.Where(x => x.odobreno >= datumOD); 
    } 

    if(datumDO.HasValue) //If we have date - add condition 
    { 
     smetkis = smetkis.Where(x => x.odobreno >= datumOD); 
     ponudis = ponudis.Where(x => x.odobreno <= datumDO); 
    } 

    var res = smetkis.Select(x => new RowViewModel 
    { 
     Id = x.ID, 
     Odobreno = x.odobreno 
     //other properties if you need   
    }).Union(ponudis.Select(x => new RowViewModel //note Union 
    { 
     Id = x.ID, 
     Odobreno = x.odobreno 
     //other properties if you need   
    })); 
    return View(res); 
} 
+0

是的,這是正確的,但對我來說問題是,我需要在一個地方一起做到這一點爲ponudis => ToList也同時從smetkis => ToList中取數據,這是可能做到的公共ActionResult報告在同一時間? – Xelmep

+0

@Xelmep檢查更新 –

相關問題