我正在尝试从DropDownLists
填充NpgsqlDataReader
。这些列表来自不同的表格。页面正在从“产品表”中加载产品,其中包含“部门表”和“组表”中的列表。问题是页面加载时,DropDownList
没有加载默认选择的值的列表,而只是从上到下加载列表。在检查源html时,没有选定的值。
但是当我调试DataReader
时,列表中有相应的记录。
在我的控制器中我有
NpgsqlCommand cmd = new NpgsqlCommand
("SELECT * FROM q_product " +
"LEFT JOIN q_department ON (q_product.department_guid = q_department.department_guid)" +
"LEFT JOIN q_group ON (q_product.q_groupid = q_group.q_groupid)" +
"ORDER BY q_guid ASC " +
"FETCH FIRST 1 ROWS ONLY"
, connection);
NpgsqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
var productPage = new ProductViewModel();
productPage.q_guid = Guid.Parse(dr["q_guid"].ToString());
productPage.q_description = dr["q_description"].ToString();
productPage.q_barcode = dr["q_barcode"].ToString();
productPage.viewDepartment = dr["q_name"].ToString();
productPage.viewGroup = dr["q_groupname"].ToString();
//other columns...
在控制器中填充下拉列表
var pagedProduct = new PaginatedList<ProductViewModel>(viewModelQuery, currentPageIndex, pageSize);
ViewBag.department_guid = new SelectList(db.q_department, "department_guid", "q_name", pagedProduct.SingleOrDefault().viewDepartment);
ViewBag.q_groupid = new SelectList(db.q_group, "q_groupid", "q_groupname", pagedProduct.SingleOrDefault().viewGroup);
调试以查看呈现页面之前的值
在我的视图(cshtml页面)中,我有
@Html.DropDownList("department_guid", null, htmlAttributes: new { @class = "form-control" })
@Html.DropDownList("q_groupid", null, htmlAttributes: new { @class = "form-control" })
这导致列表加载chossing /选择适当的值。
因此,如果列表在渲染之前在控制器中具有适当的值,我认为我在剃刀代码中缺少一个步骤以获得适当的选择?我该如何解决/解决这个问题?
答案 0 :(得分:0)
解决了问题。
错误在这些行上
productPage.viewDepartment = dr["q_description"].ToString();
productPage.viewGroup = dr["q_barcode"].ToString();
这是键入KEY列而不是文本列的问题。对我的疏忽。
productPage.viewDepartment= dr["department_guid"].ToString();
productPage.viewGroup= dr["q_groupid"].ToString();