【问题标题】:sample of kendo combo for relation table with id and value带有 id 和 value 的关系表的剑道组合示例
【发布时间】:2013-11-04 17:12:39
【问题描述】:

我在我的 asp.net mvc 4 中使用带有剃刀视图的剑道 ui,当列表从通过 ajax 的操作加载时遇到剑道组合问题,并将参数发送到服务器,如此处的示例:HERE 因为该表有超过 2,000 行。

当我加载编辑页面时,组合按预期加载和过滤数据,但该字段的值为 - [object object]。

我确实声明了 .DataTextField("ProoffName") + .DataValueField("ID")

我的客户控制器:

public ActionResult Edit(int id = 0)
    {
        Clients clients = db.Clients.Find(id);
        if (clients == null)
        {
            return HttpNotFound();
        }
        ViewData["MyAgency"] = new SelectList(db.Agency, "ID", "AgentName", clients.AgencyId);
        ViewData["MyCategory1"] = new SelectList(db.CategoryTbl, "ID", "category", clients.CategoryId);

        List<SelectListItem> obj = new List<SelectListItem>();
        obj.Add(new SelectListItem { Text = "male", Value = "1" });
        obj.Add(new SelectListItem { Text = "female", Value = "2" });
        obj.Add(new SelectListItem { Text = "choose", Value = "0" });
        ViewData["MyMin"] = obj;

        ViewBag.ProffID = new SelectList(db.ProfTBL, "ID", "ProffName", clients.ProffID);
        ViewBag.Metapel = new SelectList(db.Workers, "ID", "WorkerName", clients.Metapel);
        return View(clients);
    }

我的 ProffController:

public ActionResult ProffVM_Read(string text)
    {
        var Proff_Tbl = db.ProfTBL.Select(proff => new ProffVm { ID = proff.ID, ProffName = proff.ProffName });
        if (!string.IsNullOrEmpty(text))
        {
            Proff_Tbl = Proff_Tbl.Where(p => p.ProffName.Contains(text));
        }
        return Json(Proff_Tbl, JsonRequestBehavior.AllowGet);
    }

和剑道组合:

@Html.Label("Proff")
                            @(Html.Kendo().ComboBoxFor(model => model.ProffID)
                              .Name("proffCbo")
                              .DataTextField("ProffName")
                              .DataValueField("ID")
                              .Events(e => e
                                    .Select("proffCbo_select")
                                    .Change("proffCbo_change")
                                )
                              .DataSource(source =>
                              {
                                  source.Read(read =>
                                  {
                                      read.Action("ProffVM_Read", "Proff")
                                               .Data("onAdditionalData");
                                  });
                              })
                            )

我哪里错了??? 我可以将此组合更改为文本框,但是...我必须实现魔力。

谢谢

【问题讨论】:

  • 如果你使用的是 ComboBoxFor() 那么你需要确保组合框的名称与模型名称相同-->.Name("ProoffID")
  • 我按照你说的把名字改成 -->> .name("ProoffId") 仍然得到字段值 [object object]。
  • 当我使用控制台检查字段值 ==>$("#ProoffId").val() 我看到该值为“未定义”。
  • 很可能您正在设置新的 ProffVm { ID = proff.ID...应该是 ProffVm{ ProffID=...
  • 感谢您的回复,但 ProffId 不是表数据库中的正确字段名称。表中的字段是“ID”。如果您可以提供“var Proff_Tbl =”的示例代码,这真的很有帮助......否则我的代码会出错。

标签: asp.net-mvc-4 combobox kendo-asp.net-mvc


【解决方案1】:

改变这两行

var Proff_Tbl = db.ProfTBL.Select(proff => new ProffVm { ID = proff.ID, ProffName = proff.ProffName });

Proff_Tbl = Proff_Tbl.Where(p => p.ProffName.Contains(text));

var Proff_Tbl = db.ProfTBL.Select(proff => new ProffVm { ID = proff.ID, ProffName = proff.ProffName }).ToList();

Proff_Tbl = Proff_Tbl.Where(p => p.ProffName.Contains(text)).ToList();

【讨论】:

  • 感谢您的回答,问题出在 时,我看到值字段是正确的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
  • 2013-03-30
相关资源
最近更新 更多