【发布时间】:2014-02-23 05:45:06
【问题描述】:
在我的网格视图模型中,我有一个完整的 obj,其中有两个外键,我需要让它们显示它们具有的属性(字符串 obj)作为文本,并且将被编辑的值将是外键ID。现在我所拥有的只是在我的网页上的网格中显示部分 obj,但 FK 字段所在的位置只是显示路径而不是数据。我正在使用带有 EF 的 MVC
public class Bug
{
public int BugId { get; set; }
[ForeignKey("BugType")]
public int BugTypeId { get; set; }
public virtual BugType BugType { get; set; }
[ForeignKey("BugStatus")]
public int BugStatusId { get; set; }
public virtual BugStatus BugStatus { get; set; }
public string Description { get; set; }
public DateTime DateReported { get; set; }
}
public class BugType
{
public int BugTypeId { get; set; }
public string BugTypeName { get; set; }
public string Description { get; set; }
}
public class BugStatus
{
public int BugStatusId { get; set; }
public string BugStatusName { get; set; }
}
public class BugJqGridViewModel
{
public JQGrid Grid { get; set; }
public BugJqGridViewModel()
{
Grid = new JQGrid
{
Columns = new List<JQGridColumn>()
{
new JQGridColumn{ DataField="BugId",
PrimaryKey = true,
Editable = false,
Width = 100 },
new JQGridColumn{ DataField="BugType",
Editable = true,
Width = 175, },
new JQGridColumn{ DataField="BugStatus",
Editable = true,
Width = 175, },
new JQGridColumn{ DataField="DateReported",
Editable = false,
Width = 175,
DataFormatString = "{0:yyyy/MM/dd}" },
new JQGridColumn{ DataField="Description",
Editable = false,
Width = 800 }
},
Width = Unit.Pixel(1425),
Height = Unit.Percentage(100)
};
Grid.ToolBarSettings.ShowRefreshButton = true;
}
}
SetupEditdropdownlist 方法 我试图重新创建此方法以满足我的需要,但我遇到了 FK id 无法转换为字符串的问题。由于FK,我不确定我是否朝着正确的方向前进
private void FunctionalityContextMenu_SetUpBugIDEditDropDown(JQGrid grid)
{
// setup the grid search criteria for the columns
JQGridColumn bugTypeColumn = grid.Columns.Find(c => c.DataField == "BugType");
bugTypeColumn.Editable = true;
bugTypeColumn.EditType = EditType.DropDown;
JQGridColumn bugStatusColumn = grid.Columns.Find(c => c.DataField == "BugStatus");
bugStatusColumn.Editable = true;
bugStatusColumn.EditType = EditType.DropDown;
// Populate the search dropdown only on initial request, in order to optimize performance
if (grid.AjaxCallBackMode == AjaxCallBackMode.RequestData)
{
var db = new GameDevCupidContext();
var editList = from bug in db.Bugs
select new SelectListItem
{
Text = bug.BugType.BugTypeName,
Value = bug.BugTypeId // accepts a only a string
};
bugTypeColumn.EditList = editList.ToList();
var editList1 = from bug in db.Bugs
select new SelectListItem
{
Text = bug.BugStatus.BugStatusName,
Value = bug.BugStatusId // Accepts only a string
};
bugStatusColumn.EditList = editList1.ToList();
}
}
【问题讨论】:
标签: c# asp.net-mvc entity-framework jqgrid