私の仕事では、いくつかの銀行アプリケーションの仕事のリストを表示するために、Webアプリケーションを開発する必要があります。実際、このアプリケーションの大部分は実行されていますが、ジョブのタイプを選択できるドロップダウンリストを含める必要があります。私はこの点で完全にブロックされています。
インデックスページには、いくつかのアプリケーションとそのステータス(Job OK、KO、...)がリストされているリストがあります。ユーザーは、アプリケーションのステータス(画像)をクリックして、他のページを表示できます。 2つのパラメータ(アプリケーションと銀行のID)の機能でいくつかの情報を含むより詳細なリストが表示されます。これが私の見解のリンクです:
<a href="@Url.Action("PageDomaines", new { Controller = "Suivi", CR = VarCR, Appli = VarAppli[j] })">
<img src="../../Content/Images/feu_rouge.png" alt="Statut OK" border="0" /></a>
2つのパラメーターCRとAppliは、ビューから適切なアクションへのURLに渡されます。その後、それらに対してクエリを実行してリストを取得します。
問題は、アクション「PageDomaiens」のビューにあるドロップダウンリストで値を選択すると、パラメーターが保持されず、空のリストが表示されることです。ドロップダウンリストで選択した値がコントローラーに送信され、機能するかどうかを確認するなどのテストを行いました。「PageDomaines」のビューで選択した値を表示できますが、パラメーターCRとAppliを保持しません。 ..。。
これが私のクエリでの私のアクション「PageDomaines」です:
public ActionResult PageDomaines(string CR, string Appli, string DDL)
{
string GetCR = CR;
string GetAppli = Appli;
string GetDDL = DDL;
if (GetDDL == null)
{
var items = GetDomaines();
int Var1 = DateTime.Now.Year;
int Var2 = DateTime.Now.Month;
string Var3 = "" + Var1 + Var2;
var Query = (from i in items
where i.Field<String>("CD_APPLI") == GetAppli && i.Field<String>("CD_CR") == GetCR && i.Field<Int64>("PERIODE").ToString().Contains(Var3)
select new Suivi { CD_TRT = i.Field<String>("CD_TRT"), LB_TRT = i.Field<String>("LB_TRT"), CD_CR = i.Field<String>("CD_CR"), PERIODE = i.Field<Int64>("PERIODE"), CD_APPLI = i.Field<String>("CD_APPLI"), STATUT = i.Field<String>("STATUT") }).ToList();
ViewData["CR"] = GetCR;
ViewData["Appli"] = GetAppli;
return View(Query);
}
else
{
var items = GetDomaines();
int Var1 = DateTime.Now.Year;
int Var2 = DateTime.Now.Month;
string Var3 = "" + Var1 + Var2;
ViewData["DDL"] = GetDDL;
var Query = (from i in items
where i.Field<String>("CD_APPLI") == GetAppli && i.Field<String>("CD_CR") == GetCR && i.Field<Int64>("PERIODE").ToString().Contains(Var3) && i.Field<String>("CD_TRT").Trim() == GetDDL
select new Suivi { CD_TRT = i.Field<String>("CD_TRT"), LB_TRT = i.Field<String>("LB_TRT"), CD_CR = i.Field<String>("CD_CR"), PERIODE = i.Field<Int64>("PERIODE"), CD_APPLI = i.Field<String>("CD_APPLI"), STATUT = i.Field<String>("STATUT") }).ToList();
ViewData["CR"] = GetCR;
ViewData["Appli"] = GetAppli;
return View(Query);
}
}
private List<DataRow> GetDomaines()
{
List<DataRow> liste = null;
string query = "select CD_TRT, LB_TRT, CD_CR, PERIODE, CD_APPLI, case "
+ "when (exists (select 1 from dbo.LOGS l, dbo.REF_JOB j where j.CD_JOB = l.CD_JOB and j.CD_TRT = t.CD_TRT and l.CD_CR = cr.CD_CR and l.STATUT = 'OK' and j.JR_EXEC >= DAY(l.DT_DEB))) "
+ "and not exists (select 1 from dbo.LOGS l, dbo.REF_JOB j where j.CD_JOB = l.CD_JOB and j.CD_TRT = t.CD_TRT and l.CD_CR = cr.CD_CR and l.PERIODE = p.PERIODE "
+ "and ((j.JR_EXEC < DAY(l.DT_DEB) and l.DT_DEB is not null) or (l.STATUT in('KO','NEXEC')))) then 'OK' "
+ "when (exists(select 1 from dbo.LOGS l, dbo.REF_JOB j where j.CD_JOB = l.CD_JOB and j.CD_TRT = t.CD_TRT and l.CD_CR = cr.CD_CR and l.PERIODE = p.PERIODE and j.JR_EXEC < DAY(l.DT_DEB) "
+ "and DAY(l.DT_DEB) IS not null and l.STATUT = 'KO')) then 'KO' "
+ "when (exists(select 1 from dbo.LOGS l, dbo.REF_JOB j where j.CD_JOB = l.CD_JOB and j.CD_TRT = t.CD_TRT and l.CD_CR = cr.CD_CR and l.PERIODE = p.PERIODE "
+ "and j.JR_EXEC < DAY(l.DT_DEB) and DAY(l.DT_DEB) IS not null and l.STATUT in('OK','NEXEC'))) then 'EN COURS' "
+ "when (exists(select 1 from dbo.LOGS l, dbo.REF_JOB j where j.CD_JOB = l.CD_JOB and j.CD_TRT = t.CD_TRT and l.CD_CR = cr.CD_CR and l.PERIODE = p.PERIODE "
+ "and j.JR_EXEC < DAY(l.DT_DEB) and DAY(l.DT_DEB) IS not null)) then 'EN RETARD' else 'NON INITIE' end STATUT "
+ "from dbo.REF_TRT t, dbo.REF_CR cr, (select distinct PERIODE from dbo.LOGS) p ";
string connString = "Data Source=.;Initial Catalog=SUIVI_DWH;Integrated Security=True";
using (SqlConnection conn = new SqlConnection(connString))
{
using (SqlCommand objCommand = new SqlCommand(query, conn))
{
objCommand.CommandType = CommandType.Text;
DataTable dt = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(objCommand);
conn.Open();
adp.Fill(dt);
if (dt != null)
{
liste = dt.AsEnumerable().ToList();
}
}
}
return liste;
}
private List<DataRow> GetPERIODE()
{
List<DataRow> liste = null;
string query = "select distinct PERIODE from dbo.LOGS";
string connString = "Data Source=.;Initial Catalog=SUIVI_DWH;Integrated Security=True";
using (SqlConnection conn = new SqlConnection(connString))
{
using (SqlCommand objCommand = new SqlCommand(query, conn))
{
objCommand.CommandType = CommandType.Text;
DataTable dt = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(objCommand);
conn.Open();
adp.Fill(dt);
if (dt != null)
{
liste = dt.AsEnumerable().ToList();
}
}
}
return liste;
}
そして「PageDomaines」の見方:
@model IEnumerable<SUIVI_DWH.Models.Suivi>
@using SUIVI_DWH.Helpers
@{
ViewBag.Title = "PageDomaines";
}
<h2>@ViewData["CR"]
@ViewData["Appli"]
@ViewData["DDL"]
</h2>
@using (Html.BeginForm("PageDomaines", "Suivi"))
{
@Html.DropDownList("DDL", new SelectList(new[] { "MMCR", "MMCL", "MMCO", "MMSE", "MMAS" }), "--Select one--", new { onchange = "this.form.submit();" })
}
<table>
<tr>
<th>
CD_TRT
</th>
<th>
LB_TRT
</th>
<th>
PERIODE
</th>
<th>
STATUT
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@item.CD_TRT
</td>
<td>
@item.LB_TRT
</td>
<td>
@item.PERIODE
</td>
<td>
@if (item.STATUT == null)
{
<img src="../../Content/Images/feu_croix.png" alt="Statut null" />
}
else if (item.STATUT == "KO")
{
<a href="@Url.Action("PageLogs", new { Controller = "Suivi", CR = ViewData["CR"], Appli = ViewData["Appli"], TRT = item.CD_TRT, PERIODE = item.PERIODE })">
<img src="../../Content/Images/feu_rouge.png" alt="Statut KO" border="0" /></a>
}
else if (item.STATUT == "OK")
{
<a href="@Url.Action("PageLogs", new { Controller = "Suivi", CR = ViewData["CR"], Appli = ViewData["Appli"], TRT = item.CD_TRT, PERIODE = item.PERIODE })">
<img src="../../Content/Images/feu_vert.png" alt="Statut OK" border="0" /></a>
}
else if (item.STATUT == "EN RETARD")
{
<a href="@Url.Action("PageLogs", new { Controller = "Suivi", CR = ViewData["CR"], Appli = ViewData["Appli"], TRT = item.CD_TRT, PERIODE = item.PERIODE })">
<img src="../../Content/Images/feu_orange.png" alt="Statut en retard" border="0" /></a>
}
else if (item.STATUT == "NON INITIE")
{
<a href="@Url.Action("PageLogs", new { Controller = "Suivi", CR = ViewData["CR"], Appli = ViewData["Appli"], TRT = item.CD_TRT, PERIODE = item.PERIODE })">
<img src="../../Content/Images/feu_blanc.png" alt="Statut non initié" border="0" /></a>
}
else if (item.STATUT == "EN COURS")
{
<a href="@Url.Action("PageLogs", new { Controller = "Suivi", CR = ViewData["CR"], Appli = ViewData["Appli"], TRT = item.CD_TRT, PERIODE = item.PERIODE })">
<img src="../../Content/Images/feu_jaune.png" alt="Statut en cours" border="0" /></a>
}
</td>
</tr>
}
</table>
私は何も忘れていないことを願っています。
この問題を解決するための提案はありますか?