2011-06-21 134 views
0
var EmpPreviousChart = (from m in dataContext.ViewName 
          where ((m.EmployeeID == Id)&&(m.Status=='C')) 
          orderby m.EmployeeID descending 
          select m.EmployeeID + "- " + m.JoinDate.ToString()); 

ViewData["EmpPreviousChartList"] = EmpPreviousChart; 

上述代码我正在使用linq检索数据。如何在下拉菜单中添加选项值/默认下拉值

<%= Html.DropDownList("EmpPreviousCharts", new SelectList((IEnumerable)ViewData["EmpPreviousChartList"]), "Select", new { style = "width:60px;font-family:Verdana;font-size:9px;", ID = "EmpPrevCharts" })%> 

上面的代码来填补我的下拉列表,我得到选择在第一位。现在我希望加载下拉菜单后应该可见的值应该位于select旁边。 即如果我有选择,A,B,C分别。我想让A可见。我为此使用partialview。 如果我能在期权价值增加一个自动增量场我可以achive它 或是否有任何其他出路

回答

1

SelectList采用当前选择的项目作为参数之一 - 只是通过你想成为的项目选择。

您应该在您的控制器中实例化SelectList,然后将其传递给视图。这个观点应该有尽可能少的逻辑。

var EmpPreviousChart = (from m in dataContext.ViewName 
          where ((m.EmployeeID == Id)&&(m.Status=='C')) 
          orderby m.EmployeeID descending 
          select m.EmployeeID + "- " + m.JoinDate.ToString()).ToList(); 

ViewData["EmpPreviousChartList"] = new SelectList(EmpPreviousChart, EmpPreviousChart.FirstOrDefault()); 


<%= Html.DropDownList("EmpPreviousCharts", (SelectList)ViewData["EmpPreviousChartList"], "Select", new { style = "width:60px;font-family:Verdana;font-size:9px;", ID = "EmpPrevCharts" })%> 
+0

这是行不通的。我的朋友 –

+1

@Evostract - 有一个已知问题DropDownList的扩展方法:确保你不会在你的模型的ViewBag /属性,具有相同的名称有一个项目您选择的ID。 –

+0

我已经粘贴了代码,除此之外,我使用 –