0

カスタム編集/挿入ポップアップで Telerik MVC3 グリッドを見たところ、ほぼそこにありました。ただし、グリッドの各行に対してコントローラーによって生成されたHTMLテキストを表示する方法を見つけようとしていますが、ポップアップエディターで! (列定義に.Encoded(false)を追加するだけで、グリッド列に簡単に表示できます。)

<%= Html.Telerik().Grid<ViewModelProcurementAction>(Model.ProcurementActions) // 
        .Name("ProcurementActionGrid")
        .Columns(c =>
            {
                c.Command(commands =>
                    {
                        commands.Edit().ButtonType(GridButtonType.ImageAndText);
                        commands.Delete().ButtonType(GridButtonType.ImageAndText);
                        commands.Custom("showHistory")
                                .ButtonType(GridButtonType.ImageAndText)
                                .Text("History")
                                .Action("Show", "ProcurementActions")
                                .DataRouteValues(route => { route.Add(o => o.Id).RouteKey("id"); });
                    }).Title("Actions").Width(100);
                c.Bound(e => e.Id).Visible(false);
                c.Bound(e => e.ActionId).Visible(false);
                c.Bound(e => e.ContractNumber).HtmlAttributes(new {style = "vertical-align: top"});
                c.Bound(e => e.ContractManager).Width(120).HtmlAttributes(new {style = "vertical-align: top"});
                c.Bound(e => e.ActualCAResponsible).Width(150).HtmlAttributes(new {style = "vertical-align: top"});
                c.Bound(e => e.TitleOfRequirement).HtmlAttributes(new {style = "vertical-align: top"});
                c.Bound(e => e.CipOrName).Title("Project Id").HtmlAttributes(new {style = "vertical-align: top"});
                c.Bound(e => e.RecordTypeName).Title("Record Type").HtmlAttributes(new {style = "vertical-align: top"});
                c.Bound(e => e.ContractTypeName).Title("Contract Type").HtmlAttributes(new { style = "vertical-align: top" });
                c.Bound(e => e.ProcurementActionYearDisplayName).Title("Plan FY").HtmlAttributes(new { style = "vertical-align: top" });
            })
        .DataKeys(keys => keys.Add(o => o.Id))
        .DataBinding(dataBinding =>
                     dataBinding.Ajax()
                       .OperationMode(GridOperationMode.Client)
                       .Select("AjaxGetAll", "ProcurementActions")
                       .Update("AjaxUpdate", "ProcurementActions")
                       .Delete("AjaxDelete", "ProcurementActions")
                       .Enabled(true)
        )
        .Editable(editing => 
            editing.Mode(GridEditMode.PopUp)
                   .TemplateName("EditProcurementAction")
            )
        .Pageable(paging => paging.PageSize(15))
        .Scrollable(scrolling => scrolling.Height(500))
        .Filterable()
        .Sortable()
%>    

ポップアップ エディター用の ASCX テンプレートがあります。
ここに画像の説明を入力

グリッドに入力する前に、必要なフィールドごとに各行をスキャンし、注意が必要なすべてのデータ ポイントにメッセージを埋め込む必要があります。考慮すべき条件ロジックがいくつかあるため、これをコントローラーで行います。メッセージの List<string> を取得したら、List<string> を反復処理して単純な 4 列の HTML テーブルを生成し、それを ViewModel の一部として行の文字列として保存します。(Model.RowList[x].UpdateMessage) HTML 文字列は次のようになります。

Model.UpdateMessage = "
<table>
    <tr>
        <td colspan='4'>The following fields require additional data:</td>
    </tr>
    <tr>
        <td>Award Amount</td>
        <td>Comments</td>
        <td>Contract Number</td>
        <td>Number of Option Years</td>
    </tr>
    <tr>
        <td>Planned CA Responsible</td>
        <td>Actual CA Responsible</td>
        <td>Cost Price Analysis Date</td>
        <td>&nbsp;</td>
    </tr>
</table>";

私のポップアップ テンプレートは、基本的に次のように始まります。

<fieldset style="width: 1085px">
    <legend>Procurement Action</legend>
    <%= Html.HiddenFor(c => c.Id) %>    <=== WORKS ===
    <%= MvcHtmlString.Create(Model.UpdateMessage) %>    <=== DOES NOT WORK ===
    <%= Model.UpdateMessage.ToMvcHtmlString() %>    <=== DOES NOT WORK ===
    <%= Model.UpdateMessage %>    <=== DOES NOT WORK ===
    <%= Html.TextAreaFor(c => c.UpdateMessage) %>    <=== WORKS ===
  • 明らかに、TextAreaFor ボックスに HTML を表示するのは見苦しく、私が必要としている/望んでいるものではありません。
  • 文字列を MvcHtmlString に変換しようとするどのバージョンでも、テーブルはレンダリングされません! <グルッ!/>
  • これは本当に簡単なはずです!

何か案は???

ティア

-キロバイト

4

1 に答える 1