1

値を編​​集するには一種のマトリックスが必要です。これまでの私の結果は次のとおりです。

ここに画像の説明を入力

だから私は非常に大きな種類のテーブル(いくつかのテキストボックスで構成されています)を持っています。見出しにキャプション テキストを追加する必要がありますが、これは現時点では単なるテストです。

私のソリューションには2つの問題があります:

  1. マトリックスの数値に注目して変更すると、これらのテキストボックスに注目するのに時間がかかります。

  2. 送信をクリックすると、返す要素が多すぎるため、エラーが発生しました。

より少ないデータで試してみると、うまく機能します。さまざまなテキストボックスでフォーカスをすばやく変更すると、送信がうまくいきます。

これが私のコントローラーアクションです:

    public ActionResult Index()
    {
        var dto = _requestServiceClient.GetMatrices();
        var vm = new List<MatrixVM>();
        var viewModel = new MatrixIndexViewModel();
        Mapper.Map(dto, vm);
        viewModel.Matrix = vm;
        return View(viewModel); 
    }

    [HttpPost]
    public ActionResult Index(MatrixIndexViewModel viewModel)
    {
        return View(viewModel);
    }

私が使用するモデルは次のとおりです。

public class MatrixIndexViewModel
{
    public List<MatrixVM> Matrix { get; set; }
}

public class MatrixVM
{
    public int      MatrixID { get; set; }
    public int      OriginStopID { get; set; }
    public string   OriginStopText { get; set; }
    public int      DestinationStopID { get; set; }
    public string   DestinationStopText { get; set; }
    public int      NumberOfDays { get; set; }

}

これが私の見解です:

@model PLATON.WebUI.Areas.Admin.ViewModels.Matrix.MatrixIndexViewModel
@using PLATON.WebUI.App_LocalResources

@{
    Layout = "~/Areas/Admin/Views/Shared/_Layout.Admin.cshtml";
    ViewBag.Title = UserResource.Matrix;
    double nbrStops = Math.Sqrt(Model.Matrix.Count());
    Html.EnableClientValidation(false);
}

@using (Html.BeginForm())
{     
    for (int count = 0; count < Model.Matrix.Count(); count++)
    {
        if (count % nbrStops == 0)
        {   
            // Displaying heading text for each lines         
            @Html.DisplayFor(x => x.Matrix[count].OriginStopText)
        }

        @Html.HiddenFor(x => x.Matrix[count].MatrixID)
        @Html.HiddenFor(x => x.Matrix[count].OriginStopID)
        @Html.HiddenFor(x => x.Matrix[count].DestinationStopID)
        @Html.TextBoxFor(x => x.Matrix[count].NumberOfDays, new { style = "width:13px" })

        if (count % nbrStops == nbrStops - 1) 
        {
            // Proceed next line
            @:<br /> 
        }
    }

    <div class="submit_block"> 
        <input type="submit" class="btn primary" value="Enregistrer" /> 
    </div> 
} 

より良い実装のアイデアはありますか? おそらく、より良いアイデアは、「読み取り専用」のマトリックスを作成し、要素をクリックしてjqueryダイアログで編集できるようにすることです。どう思いますか?

とにかくありがとう。

4

1 に答える 1

0

<table>データを表示するためにonclick/onmouseenteraを使用し、すべてのセルに入力を受け入れるためのテキストボックスを表示すると思います。

ポップアップを開いて、その時点で値をコントローラーに投稿したり、セルテキストをTextBoxに置き換えて、変更された値のみを非表示の入力リストに記録したりすることができます。

于 2012-05-05T09:35:49.907 に答える