7

剣道グリッドに新しいレコードを挿入することだけを有効にして、レコードの編集を無効にすることは可能ですか?

私ができる最善のことは、JavaScriptの「編集」ボタンをonDataBoundで削除することです。設定しようとしEditable(ed => ed.Enabled(false))ましたが、実行時にエラーが発生します。

@(Html.Kendo().Grid(Model)    
    .Name("Grid" + guid)
    .HtmlAttributes(new { style = "margin:20px" })
    .Columns(columns =>
    {
        columns.Bound(p => p.Id).Hidden(true);
        //a few more columns

        columns.Command(command =>
            {
                command.Edit().Text(Resources.KendoEdit).UpdateText(Resources.KendoUpdateText).CancelText(Resources.KendoCancelText);
                command.Destroy().Text(Resources.KendoDestroy);
            }).Title(Resources.KendoCommands).Width(180);

    })
    .ToolBar(toolbar => toolbar.Create().Text(Resources.KendoToolbarCreate))
    .Editable(editable => editable
        //.Enabled(false)
        .Mode(GridEditMode.InLine)
        .DisplayDeleteConfirmation(false)
    )
    .DataSource(dataSource => dataSource
        .Ajax()
        .ServerOperation(false)
        .Events(events => events.Sync("sync").Error("error"))
        .Model(mod => mod
            .Id(p => p.Id)
        )
        .Model(mod => mod
            .Field(p => p.OldRoleId).Editable(false)
        )

        .Read(read => read.Action("ChangeRole_Read", "ChangeRole"))
        .Create(update => update.Action("ChangeRole_Create", "ChangeRole"))
        .Update(update => update.Action("ChangeRole_Update", "ChangeRole"))
        .Destroy(update => update.Action("ChangeRole_Destroy", "ChangeRole"))
    )
    .Sortable()
    .Filterable(filterable => filterable
        .Extra(true)
        .Operators(operators => operators
            .ForString(str => str.Clear()
                .StartsWith(Resources.KendoFilterStartsWith)
                .IsEqualTo(Resources.KendoFilterIsEqualTo)
                .IsNotEqualTo(Resources.KendoFilterIsNotEqualTo)
                .Contains(Resources.KendoFilterContains)
                .DoesNotContain(Resources.KendoFilterDoesNotContain)
                .EndsWith(Resources.KendoFilterEndsWith)
            )
        )
        .Messages(mess => mess
            .Info(Resources.KendoFilterMsgInfo)
            .And(Resources.KendoFilterMsgAnd)
            .Or(Resources.KendoFilterMsgOr)
            .Filter(Resources.KendoFilterMsgFilter)
            .Clear(Resources.KendoFilterMsgClear)
        )
    ) 
    .Scrollable()
    .Pageable(pg => pg
        .Refresh(true)
        .Messages(ms => ms
            .First(Resources.KendoPageableFirst)
            .Last(Resources.KendoPageableLast)
            .Next(Resources.KendoPageableNext)
            .Previous(Resources.KendoPageablePrevious)
            .Empty(Resources.KendoPageableEmpty)
            .Display(Resources.KendoPageableDisplay)
        )
    )
    .Events(ev => ev
        .Edit("edit")
        .Save("save")
        .DataBound("dataBound")
    )
)
4

5 に答える 5

4

これを行う唯一の方法は、[編集] ボタンの可視性を [なし] に設定することです。

<style>
    #yourgridid .k-grid-edit
    {
        display: none;
    }
</style>
于 2015-02-20T15:34:24.287 に答える
1

グリッドの初期化に使用しているコードがないと答えるのは難しいですが、試してみます。私の記憶が正しければ、次のように編集/削除ボタンのある列を追加するように Kendo に明示的に指示する必要があります。

.Columns(columns =>
        {
            columns.Bound(m => m.Whatever);
            columns.Command(command =>
            {
                command.Edit();
                command.Destroy();
            });
        })

したがって、列定義にこれまたはそのようなものが含まれている場合、それを削除すると編集/削除がなくなりますが、グリッドの上部バーに追加ボタンが表示されたままになります。

これが編集/削除ボタンの設定方法でない場合は、グリッド コードを投稿していただければ、喜んで回答を修正します。

于 2013-03-07T05:54:19.657 に答える
1

私も同じ問題を抱えていました。

これまでの唯一の回避策は、ポップアップ編集を使用して、グリッドから編集コマンド ボタンを削除することです。あとは、エディター テンプレートをカスタマイズするだけです。

@(Html.Kendo().Grid<xxxxViewModel>()
        .Name("xxxx")
        .Columns(columns =>
        {            
            .........

            columns.Command(command => { command.Destroy().Text("Del"); }).Width(80);
        })
        .ToolBar(commands => { 
            commands.Create();
        })
        .Pageable()
        .Editable(editable => editable.Mode(GridEditMode.PopUp))
        .Sortable()
        .Scrollable()
        .Filterable()       
        .Events(events => {
            //events.Save("xxxx");
        })
        .HtmlAttributes(new { style = "height:700px" })          
        .DataSource(dataSource => dataSource
            .Ajax()
            .Events(events => events.Error("error"))
            .Model(model =>
            {
                model.Id(p => p.xxxx);
                model.Field(p => p.xxxx).Editable(false);
            })
            .Create(create => create.Action("xxxx", "xxxx"))
            .Read(read => read.Action("xxxx", "xxxx"))            
            .Destroy(destroy => destroy.Action("xxxx", "xxxx"))                
        )
)
于 2013-04-05T08:15:58.080 に答える
0

他の人があなたが削除する必要があると示唆しているようにも思います

command.Edit() 

行から保存ボタンを表示するには、作成ボタンの横にあるツールバーに追加できます。

toolbar.Save()

乾杯、サメ

于 2015-04-23T09:01:27.563 に答える
0

この修正は、以下のコメント行にあります。

.Columns(cols =>
{

    cols.Bound(c => c.name).Width(300);
    cols.Bound(c => c.dateBuilt);

    cols.Command(cmd =>
    {
        cmd.Select();
        //cmd.Edit();//This is the part to comment out if u want to disable edit
        cmd.Destroy();
    });
})
于 2013-03-25T14:30:29.323 に答える