2017-06-19 223 views
0

我是Kendo UI的新手,我搜索了我想做的事情,但沒有任何運氣。我擁有充滿財政年度的組合框。我想默認選擇當前的那個,它並不總是在組合框中處於相同的等級。我們在數據庫中有一個字段,它在當前年份設置爲0。我想要將任何處於0的字段作爲我的默認值。設置來自Linq的Kendo combobox默認值

這裏是我的控制器中的相關代碼。 defaultValue變量當前未被使用。我試圖用它做一些沒有成功的事情,我已經讓它在那裏,因爲它清楚地表明瞭我想要完成的事情。

public JsonResult ListeAnneeFinanciere() 
    { 
     var dimtempsdate = new DimTempsDateViewModel(); 

     try 
     { 
      using (var db = new ParcAutoDbContext()) 
      { 
       var resultat = db.Dim_Temps_Date.Select(a => new { a.ANNEE_FINANCIERE_ID, a.CLASSEMENT }) 
               .Distinct() 
               .OrderByDescending(a => a.ANNEE_FINANCIERE_ID) 
               .ToList(); 

       var defaultValue = db.Dim_Temps_Date.Select(a => new { a.ANNEE_FINANCIERE_ID, a.CLASSEMENT }) 
               .Distinct() 
               .Where(a => a.CLASSEMENT == 0) 
               .OrderByDescending(a => a.ANNEE_FINANCIERE_ID) 
               .ToList(); 

       return Json(resultat, JsonRequestBehavior.AllowGet); 
      } 
     } 
     catch (Exception ex) 
     { 
      Log.Instance.Error(ex, message: "Erreur : ListeAnneeFinanciere"); 
      throw new HttpException((int) HttpStatusCode.InternalServerError, message: "500 - Internal Server Error"); 
     } 
    } 

這裏是我認爲相關的代碼。我知道我需要使用value屬性設置默認值。我可以硬編碼,但它不是我想要的。我也在Databound事件中嘗試了一些東西,但沒有成功。說實話,我真的不知道該怎麼嘗試。

<div class="form-group"> 
       <label class="control-label col-xs-3">Année financière</label> 
       <div class="col-md-4 col-xs-9"> 
        @{ 
         Html.Kendo().ComboBox() 
          //.Events(e => e.DataBound("setDefaultYear")) 
          .Name("AnneeFinanciere") 
          .Placeholder("Sélectionner une année financière") 
          .NoDataTemplate("Aucune donnée") 
          .DataTextField("ANNEE_FINANCIERE_ID") 
          .DataValueField("ANNEE_FINANCIERE_ID") 
          .AutoBind(true) 
          .Suggest(true) 
          .DataSource(source => 
          { 
           source.Read(read => 
           { 
            read.Action("ListeAnneeFinanciere", "Operation"); 
           }) 
           .ServerFiltering(true); 
          }) 
          //.Value("2017-2018") 
          .HtmlAttributes(new { @style = "width:100%" }) 
          .Render(); 
        } 
       </div> 
      </div> 

我知道它一定不是那麼難,但我是初級用Kendo UI而不是用MVC進行實驗。英語不是我的第一語言,但我希望我的問題很清楚,有人可以幫助我。

非常感謝您的時間。

回答

0

從上面的示例代碼,因爲這兩個DataTextFieldDataValueFieldANNEE_FINANCIERE_ID - 我不知道你得到了數據的正確設置爲首先,你可能想先檢查,提到

假設ANNEE_FINANCIERE_ID是值字段CLASSEMENT是文本字段,您可以通過將默認數據var default = new {ANNEE_FINANCIERE_ID=0, CLASSEMENT="default"}作爲視圖數據從控制器傳遞到視圖來設置默認值。

 html.Kendo().ComboBox() 

         .Name("AnneeFinanciere") 
         .Placeholder("Sélectionner une année financière") 
         .NoDataTemplate("Aucune donnée") 
         .DataTextField("CLASSEMENT") 
         .DataValueField("ANNEE_FINANCIERE_ID") 
         .AutoBind(true) 
         .Suggest(true) 
         .DataSource(source => 
         { 
          source.Read(read => 
          { 
           read.Action("ListeAnneeFinanciere", "Operation"); 
          }) 
          .ServerFiltering(true); 
         }) 
         .Value(ViewData["defaultClassement"]) 
         .HtmlAttributes(new { @style = "width:100%" }) 
         .Render(); 
+0

默認_ANNEE_FINANCIERE_ID_是「2017-2018」。相應的_CLASSEMENT_是0.它是CLASSEMENT值,它告訴我哪一年是哪一年。作爲參考,上一個會計年度具有以下_ANNEE_FINANCIERE_ID_和_CLASSEMENT_:「2016-2017」和-1。下一個財政年度有「2018-2019」和1.等等。財政年度變化時,數據庫中的_CLASSEMENT_被更改。非常感謝您的回答,並遺憾地遺漏了關於我的問題的關鍵信息。 –

+1

即使你沒有完全理解我想要的東西(無論如何我的錯),你的回答幫助我做我想要的東西:)非常感謝:) –