Telerik MVC Grid-Vorlage Bearbeiten DropDownList problem
Ich bin immer ein null-Wert übergeben, um meine ajax .Update("_SaveAjaxEditing", "AptProfile") in meinem controller wenn Sie das dropdownlist-client-Vorlage Bearbeiten.
Eigenschaft in meinem FormViewModel, dass mein raster gebunden ist:
[UIHint("BuildingsGrid"), Required]
[DisplayName("Building ID")]
public int BuildingID
{
get;
set;
}).
Hier ist meine Ansicht:
<%= Html.Telerik().Grid<PayRent.Models.AptProfileFormViewModel1>()
.Name("Profiles")
.DataKeys(dataKeys => dataKeys.Add(c => c.AptProfileID))
.ToolBar(commands => commands.Insert())
.DataBinding(binding =>
{
binding.Ajax()
.Select("GetProfiles", "AptProfile")
.Insert("_InsertAjaxEditing", "AptProfile")
.Update("_SaveAjaxEditing", "AptProfile")
.Delete("_DeleteAjaxEditing", "AptProfile");
})
.Columns(columns =>
{
columns.Bound(o => o.AptProfileID);
columns.Bound(o => o.BuildingID);
columns.Bound(o => o.AptID);
columns.Bound(o => o.AptRate);
columns.Bound(o => o.AptSize);
columns.Bound(o => o.MoveInDate);
columns.Command(s =>
{
s.Edit();
s.Delete();
});
})
.Editable(editing => editing.Mode(GridEditMode.InLine))
.ClientEvents(events => events.OnEdit("onEdit"))
.Pageable()
%>
</p>
<script type="text/javascript">
function onEdit(e) {
// $(e.form).find('#BuildingsGrid').data('tDropDownList').select(function (dataItem) {
// return dataItem.Text == e.dataItem['BuildingGrid'];
// });
}
</script>
My EditTemplate:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%= Html.Telerik().DropDownList()
.Name("BuildingsGrid")
.BindTo(new SelectList((IEnumerable)ViewData["Buildings"], "BuildingID", "Name"))
%>)
Hier ist mein Controller:
[AcceptVerbs(HttpVerbs.Post)]
//[CultureAwareAction]
[GridAction]
public ActionResult _SaveAjaxEditing(int id, int? BuildingGrid)
{
ApartmentProfileRepository repo = new ApartmentProfileRepository();
AptProfile profile = repo.Get(id);
TryUpdateModel(profile);
repo.Save();
return View(new GridModel(GetAllProfiles()));
}
InformationsquelleAutor LiquidChild | 2011-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst müssen Sie übereinstimmen, bis der name der Spalte in der Ansicht mit den Namen Ihrer Vorlage Bearbeiten und controller-action-parameter. Ich glaube nicht, dass der int-parameter muss null sein, in der controller-action.
Dann in einer controller-action, die Sie benötigen, um das ViewData["Buildings"] für die Vorlage Bearbeiten; wählen Sie dann den aktuellen Wert in Ihrem Profil-Objekt, bevor Sie den Blick.
z.B.
campbelt, was ist mit dem helper-Objekt zurück aufzählbare Liste von Bau-Objekten. In der Vorlage Bearbeiten, ersetzen Sie die ViewData mit Ihrem Helfer-Klasse-Methode. Nur denken Sie daran, dies wird nur einmal gerendert, bevor die grid-Daten gebunden ist, und dann die gleiche Liste für jede Zeile.
Danke, Winger. Ich werde in diesem Blick. In der Zwischenzeit, kennt Ihr zufällig ein gutes Beispiel für diese Art von Sache, die ich mir ansehen kann?
Das vollständigste Beispiel, das ich gesehen habe, Telerik online-demo hier: demos.telerik.com/aspnet-mvc/grid/clientedittemplates. Hoffe, das hilft!
Ich habe das gleiche Problem. Ich folgte den 1. und 2. Aber ich bin nicht immer der neu ausgewählte Wert in der dropdownlist. Der code ist fast das gleiche hier. Nur der Unterschied ist ich m mit Server(nicht ajax )verbindlich. demos.telerik.com/aspnet-mvc/grid/clientedittemplates. Das ist auch meine Frage stackoverflow.com/questions/12198163/...
InformationsquelleAutor Winger
Wenn Sie möchten, um alles Ajax-freundlich, Sie tun es, ohne mit der viewbag. Meine combobox ist in einer separaten editor-template. Alles, was Sie tun müssen, ist die Rückkehr der Auswahlliste als JsonResult. Das heißt, ich habe nur empfohlen, es zu tun auf diese Weise, wenn Sie erwarten, dass die Daten in die combobox zu ändern, während der Benutzer auf die Seite, denn er fordert die server-Methode jedes mal, wenn das Kombinationsfeld geöffnet wird.
In meinem Beispiel unten, weil der Benutzer hinzufügen können Sie eine Kategorie auf der gleichen Seite wie Sie eine Kategorie auswählen, die ich brauche, es zu schlagen, die server jedes mal. Aber auf anderen Seiten, die ich verwenden server-side-Bindung (über den ViewBag/ViewData), so dass es nur die trifft, die den server einmal.
Mein editor Vorlage:
Dann im controller:
Vielleicht bin ich ein bisschen spät, aber hoffentlich hilft es jemanden.
InformationsquelleAutor Will