2017-05-09 56 views
0

我有以下查詢。
我想連接兩個表並在下拉列表中顯示一列。從數據庫連接兩個表並在MVC的下拉列表中顯示一個列值

控制器代碼:

// GET: SelectLLD 
public ActionResult Index() 
{ 

    var sLoginName = Session["LoginName"]; 
    var iLoginId = Session["LoginID"]; 

    if(sLoginName!= null) 
    { 
     ViewBag.LoginId = iLoginId; 


     //Db context object 
     enterpriseEntities db = new enterpriseEntities(); 

     var lob = from l in db.Lobs 
        join r in db.Rights 
        on l.LobID equals r.LobID 
        //where r.LoginID = 
        select new 
        { 
         l.LobName 

        }; 
     SelectList list = new SelectList (lob, "lobname"); 

     ViewBag.LobNames = list; 
     return View(); 

    } 
    else{ 

     return RedirectToAction("Index", "Login"); 
    } 


} 

視圖代碼:

@{ 
    ViewBag.Title = "Index"; 
} 
<h4>Welcome @Session["LoginName"]</h4> 
<h4>@ViewBag.LoginId</h4> 
<h3>Select LOB</h3> 

<div> 
    @Html.DropDownList("LobNames", "Select a Value") 
</div> 
<h3>Select Bussiness Date </h3> 

的問題是,與上面的代碼我的獲取列名稱還添加有在滴列值下拉列表。 以下是截圖

我得到了列名和值。 i am getting the out having column name and the value

我只希望列值顯示在下拉列表中。例如,只應顯示「銷售」值。

回答

0

你能否將SelectList list = new SelectList (lob, "lobname");的代碼改成這樣的東西?

var list = logb.Select(x => new SelectListItem { 
      Value = x.LobID.ToString(), 
      Text = x.LobName 
     }).ToList(); 

這意味着你必須要添加LobId原來的選擇,像這樣

var lob = from l in db.Lobs 
        join r in db.Rights 
        on l.LobID equals r.LobID 
        //where r.LoginID = 
        select new 
        { 
         LobName = l.LobName, 
         LobID = L.LobID 
        }; 

編輯:這是假設你想,如果你提交表單,而不是要通過的LobID值LobName。

+1

非常感謝非常錯誤的工作如預期我需要在下拉列表中的高球名稱我相應地修改了代碼 – Brijesh

相關問題