【问题标题】:How to display property from FK obj but edit the ID when editting the datafield?如何从 FK obj 显示属性但在编辑数据字段时编辑 ID?
【发布时间】: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


    【解决方案1】:

    我发现了我自己的问题。显然,您必须将表连接在一起,然后将它们绑定到网格。

    public JsonResult EmployeeJqGridDataRequested()
    {
          var bugGridModel = new BugJqGridViewModel();
    
          var db = new bugContext();
          var bugs = from b in db.Bugs
                     join bt in db.BugTypes on b.BugTypeId equals bt.BugTypeId
                     join bs in db.BugStati on b.BugStatusId equals bs.BugStatusId
                     select new { b.BugId, bt.BugTypeName, bs.BugStatusName,b.DateReported,b.Description };
          return bugGridModel.Grid.DataBind(bugs);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2015-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多