0

私の見解では、2 つのグリッドがあります。最初のグリッドで行を選択すると、2 番目のグリッドは最初のグリッドに従ってバインドされます。私がやりたいことは、最初のものから共通のパラメーターを取得し、2番目のもので使用され、読み取り専用または無効な入力でテンプレートを作成することです。私の問題は、入力要素が最初のグリッドからパラメーターを取得することですが、コントローラーに投稿しないでください。

コントローラー機能

[AcceptVerbs(HttpVerbs.Post)]
public JsonResult DonemKursSinifiOlustur([DataSourceRequest] DataSourceRequest request, DonemKursSinifi model,string DonemId, string DersId, string EgitmenId )
{

    if (model != null && ModelState.IsValid)
    {
        Helper.Islemci.DonemKursSinifiTanimla(model);
    }
    return Json(new[] { model }.ToDataSourceResult(request, ModelState));
}

model.DonemId、model.DersId、model.EgitmenId および DonemId、DersId、EgitmenId は null になります。

グリッドの作成および更新用の EditorTemplate ビュー

@model Kurslar.Models.DonemKursSinifi
@using (Html.BeginForm("DonemKursSinifiOlustur","Tanim",FormMethod.Post))
{
<table>
        <tr>
            <td>
                Lütfen Gün ve Saati Belirtiniz:
            </td>
            <td>
                @Html.Kendo().AutoCompleteFor(m=>m.Tanim)
            </td>
        </tr>
        <tr>
            <td>
                Donem :
            </td>
            <td>

                @Html.Kendo().AutoCompleteFor(m=>m.DonemBaslangicBitis)
                @Html.HiddenFor(m => m.DonemId)
            </td>
        </tr>
        <tr>
            <td>
                Ders Adı:
            </td>
            <td>

                @Html.Kendo().AutoCompleteFor(m=>m.DersAdi)
                @Html.HiddenFor(m => m.DersId)
              </td>
        </tr>
        <tr>
            <td>
                Eğitmen
            </td>
            <td>
                @Html.Kendo().AutoCompleteFor(m=>m.EgitmenAdiSoyadi)
                @Html.HiddenFor(m => m.DonemId)

            </td>
        </tr>
    </table>}

最初の AutoCompleteFor は、設定前ではなくユーザーから入力を受け取るため、正しく機能します。

*および EditorTemplate にパラメーターを入力するための私の JavaScript コード* 正常 に動作します

    var grid = $("#donemGrid").data("kendoGrid");
    var rows = grid.select();
    alert(rows);
    try {
        var donemID = grid.dataItem(rows).DonemId;
        var dersID = grid.dataItem(rows).DersId;
        var egitmenID = grid.dataItem(rows).EgitmenId;
        var dersAdi = grid.dataItem(rows).DersAdi;
        var egitmenAdiSoyadi= grid.dataItem(rows).EgitmenAdiSoyadi;
        var donemBaslangicBitis = grid.dataItem(rows).DonemBaslangicBitis;
    } catch (e) {
        alert(e);
    }

    $("#DonemBaslangicBitis").data("kendoAutoComplete").value(donemBaslangicBitis);
    $("#DersAdi").data("kendoAutoComplete").value(dersAdi);
    $("#EgitmenAdiSoyadi").data("kendoAutoComplete").value(egitmenAdiSoyadi);
    $("#DonemId").val(donemID);
    $("#DersId").val(dersID);
    $("#EgitmenId").val(egitmenID);

*必要に応じて、私のモデル*

public class DonemKursSinifi
{
    [Key]
    [Required]
    [PersistentProperty(IsAutoIncremented = true)]
    public int Id { get; set; }

    [PersistentProperty]
    public string Tanim { get; set; }

    [PersistentProperty]
    public int DonemId { get; set; }

    [PersistentProperty]
    public int DersId { get; set; }

    [PersistentProperty]
    public int EgitmenId { get; set; }

    [PersistentProperty]
    public int KontenjanSayisi { get; set; }

    [PersistentProperty]
    public int TarifeId { get; set; }

    [PersistentProperty]
    public int IslemNo { get; set; }  // default 1

    public string EgitmenAdiSoyadi { get; set; }

    public string DersAdi { get; set; }

    public string DonemBaslangicBitis { get; set; }
}
4

1 に答える 1

0

わかりました、おそらくグリッドで id を繰り返し、これを行うために同じフォームに同じ name 属性を持っています:

@Html.HiddenFor(m => m.DersId)

次のようなことができます:

形:

@model Kurslar.Models.DonemKursSinifi
@using (Html.BeginForm("DonemKursSinifiOlustur","Tanim", FormMethod.Post, new { id="myform"}))
{
  <input type="hidden" value="" name="Tanim" />
  <input type="hidden" value="" name="DonemBaslangicBitis" />
  <input type="hidden" value="" name="DonemId" />
  <input type="hidden" value="" name="DersAdi" />
  <input type="hidden" value="" name="DersId" />
  <input type="hidden" value="" name="EgitmenAdiSoyadi" />
  <input type="hidden" value="" name="DonemId" />
}

テーブル:

<table>
    <tr>
        <td>Lütfen Gün ve Saati Belirtiniz:</td>
        <td>@Html.Kendo().AutoCompleteFor(m=>m.Tanim)</td>
    </tr>
    <tr>
        <td>Donem :</td>
        <td>@Html.Kendo().AutoCompleteFor(m=>m.DonemBaslangicBitis) @Html.HiddenFor(m => m.DonemId)</td>
    </tr>
    <tr>
        <td>Ders Adı:</td>
        <td>@Html.Kendo().AutoCompleteFor(m=>m.DersAdi) @Html.HiddenFor(m => m.DersId)</td>
    </tr>
    <tr>
        <td>Eğitmen</td>
        <td>@Html.Kendo().AutoCompleteFor(m=>m.EgitmenAdiSoyadi) @Html.HiddenFor(m => m.DonemId)</td>
    </tr>
</table>

js:

var 
    grid = $("#donemGrid").data("kendoGrid"),
    rows = grid.select(),
    form = $('#myform');

form.find('input[name="DonemBaslangicBitis"]').val(grid.dataItem(rows).DonemBaslangicBitis);
form.find('input[name="DersAdi"]').val(grid.dataItem(rows).DersAdi);
form.find('input[name="EgitmenAdiSoyadi"]').val(grid.dataItem(rows).EgitmenAdiSoyadi);
form.find('input[name="DonemId"]').val(grid.dataItem(rows).DonemId);
form.find('input[name="DersId"]').val(grid.dataItem(rows).DersId);
form.find('input[name="EgitmenId"]').val(grid.dataItem(rows).EgitmenId);

form.submit();
于 2013-09-17T13:48:33.773 に答える