私はAjax編集でTelerik MVCグリッドを実装しようとしています。基本的にはグループのクラスであり、すべてのグループは組織に属しています。編集モードでは、選択可能な組織とのドロップダウンリストを表示する必要があります。Telerik MVCグリッド、Ajax編集でドロップダウンリストを作成できない
私はチュートリアルとこのフォーラムに従ってきましたが、動作させることはできません。
これは私のコードです:
モデル:
Partial Public Class hdmtGROUP
<ScaffoldColumn(False)>
Public Property gID As Integer
Public Property gORG As Integer
'Dropdownlist.
<UIHint("_OrgDropDownListPartial"), Required()>
Public Property Organisation As String
<DisplayName("Name")>
<Required(ErrorMessage:="A {0} is required.")>
<StringLength(120, ErrorMessage:="{0} is too long.")>
Public Property gNAME As String
<DisplayName("Description")>
<Required(ErrorMessage:="A {0} is required.")>
<StringLength(2000, ErrorMessage:="{0} is too long.")>
Public Property gDESC As String
Private _hdmtORG As hdmtORG
Public Overridable Property hdmtORG As hdmtORG
Friend Get
Return _hdmtORG
End Get
Set(ByVal value As hdmtORG)
_hdmtORG = value
End Set
End Property
End Class
Partial Public Class Organisation
Public Id As Integer
Public Name As String
End Class
マイコントローラ:
Public Class GroupController
Inherits System.Web.Mvc.Controller
Private unitOfWork As UnitOfWork = New UnitOfWork()
Function Index() As ViewResult
PopulateOrgsDropDownList()
Return View(Me.unitOfWork.GroupRepository.Get())
End Function
<GridAction()>
Public Function AjaxSelect() As ActionResult
Return View(New GridModel(Me.unitOfWork.GroupRepository.Get()))
End Function
Private Sub PopulateOrgsDropDownList(Optional selectedOrg As Object = Nothing)
ViewData("orgs") = Me.unitOfWork.OrgRepository.Get() _
.Select(Function(o) New With {.Id = o.orgID, .Name =o.orgNAME}) _
.OrderBy(Function(o) o.Name)
End Sub
マイビュー:
'declare the grid and enable features
Dim grid = Html.Telerik().Grid(Model) _
.Name("Grid") _
.DataKeys(Function(k) k.Add(Function(g) g.gID)) _
.Pageable() _
.Sortable() _
.Filterable() _
.ToolBar(Function(t) t.Insert()) _
.DataBinding(Function(dataBind) dataBind.Ajax() _
.Select("AjaxSelect", "Group") _
.Insert("Create", "Group") _
.Update("Edit", "Group") _
.Delete("Delete", "Group"))
'Add grid columns
grid.Columns(Function(columns) columns.Bound(Function(g) g.gNAME).Width(200))
grid.Columns(Function(columns) columns.Bound(Function(g) g.gDESC).Width(200))
grid.Columns(Function(columns) columns.Bound(Function(g) g.Organisation).Width(200))
grid.Columns(Function(columns) columns.Command(Function(s) {s.Edit().ButtonType(GridButtonType.BareImage), s.Delete.ButtonType(GridButtonType.BareImage)}).Width(65))
'Render the grid
grid.Render()
function onEdit(e) {
$(e.form).find('#Organisation').data('tDropDownList').select(function (dataItem) {
return dataItem.Text == e.dataItem['Organisation'];
});
}
と部分ビュー:
@imports System.Collections
@imports Telerik.Web.Mvc.UI
@(Html.Telerik().DropDownList() _
.Name("Organisation") _
.BindTo(New SelectList(DirectCast(ViewData("orgs"), IEnumerable), "Id", "Name")))
@
私は何か助けていただきありがとうございます。
ありがとうございます。
こんにちはMahmoud、ありがとう!今は動作しますが、問題は残っています。編集ボタンを押すとドロップダウンリストが表示され、データベースの値が更新されますが、組織の列にフィールドの値を設定することはできません。モデルに部分クラスを作成しましたが、うまくいきません。何が問題なのか分かりますか? (私は最後の試行でコードを更新しました) – Scheveningen
"編集"ボタンを押すと、関連組織がDropDownListで選択しないことを意味しますか?実際に何もする必要はありません! 注意してください! :あなたのコンボボックスが項目のリスト((OrgId、OrganizationName)のようなキーと値のペアを持つ)にバインドされている場合、あなたのモデルはOrganizationNameではなくOrgIdフィールドを保持する必要があります!その後、編集モードに変更すると、ドロップレットDropDownListが自動的に関連項目を選択します。 –
グリッドを読み込むと、Organizationに関する列に情報が表示されません。編集ボタンを押すと、ドロップダウンリストが表示されますが、関連する組織には表示されません。ドロップダウンリストにのみ表示されます。私が前に言ったように、Public Property Organization As Stringを追加し、それをIdとName(モデルを参照)の部分クラスにしましたが、まだ動作しません。 – Scheveningen