默认treeList和dataGrid删除确认按钮

问题描述 投票:0回答:1

我在自定义“是”和“否”默认按钮的本地化文本以确认 asp.net core 项目中 devexpress 中的 treeList 和 DataGrid 中的删除时遇到问题。有什么解决方案可以激活这些按钮对话框上的本地化吗?

enter image description here

我希望找到一种解决方案来解决多个 razor 页面的此问题,而无需修改包含 devexpress 组件的每个 razor 页面。
例子:

@using DevExtreme.AspNet.Mvc;

@using Microsoft.Extensions.Localization
@using MainApp.Localization
@using MainApp.Web.Pages.AuthFiles
@using System.Globalization;
@using System.Threading;

@inject IStringLocalizer<MainAppResource> L

@{
}
<link href="~/css_dx/devextreme/dx.common.css" rel="stylesheet" />
<abp-script-bundle name="DocSysDevExpressScriptBundle" />
<abp-style-bundle name="DocSysDevExpressStyleBundle" />

@{
    var moduleName = Model.moduleName;
    var previewRelatedDocuments = Model.previewRelatedDocuments;
    var approveBool = Model.approveBool;
    String langName = Thread.CurrentThread.CurrentCulture.Name;
    var rtlBool = false;
    if (langName.Equals("ar"))
    {


        rtlBool = true;
    }
    else
    {
        rtlBool = false;
    }

  
}

<abp-style-bundle>
    <abp-style src="/client-proxies/DocsysCss.css" />
</abp-style-bundle>

@(
Html.DevExtreme().DataGrid<MainApp.Topics.TopicDto>()
.ID("gridContainer").DataSource(new JS("topicsGrid_dataSource"))
.OnSaving("onSaving")
.RtlEnabled(rtlBool)
.Selection(s => s.Mode(SelectionMode.Multiple))
.OnSelectionChanged("selection_changed")

.Columns(columns =>
{


    columns.AddFor(m => m.topic_Control_Code).Caption(@L["TopicControlCode"].Value);
    if (moduleName == "Libsys"){
        columns.AddFor(m => m.topic_Name_Ar).Caption(@L["TopicNameAr"].Value);
        columns.AddFor(m => m.topic_Name_En).Caption(@L["TopicNameEn"].Value);
        columns.AddFor(m => m.topicTypeLibsys).Lookup(x => x.DataSource(topicTypeEntities)
                     .ValueExpr("id")
                     .DisplayExpr("text"))
                     .Caption(@L["AuthorType"].Value);
    }

    else
    {
        if (rtlBool)
        {
            columns.AddFor(m => m.topic_Name_Ar).Caption(@L["TopicName"].Value);
            columns.AddFor(m => m.topic_Name_En).Caption(@L["TopicName"].Value).Visible(false);

        }
        else
        {
            columns.AddFor(m => m.topic_Name_En).Caption(@L["TopicName"].Value);
            columns.AddFor(m => m.topic_Name_Ar).Caption(@L["TopicName"].Value).Visible(false);

        }

        columns.AddFor(m => m.docsCount).Caption(@L["DocsCount"].Value)
    .AllowEditing(false);
    }
    columns.AddFor(m => m.synonyms).Caption(@L["Synonym"].Value).Visible(false);
    columns.AddFor(m => m.isApproved).Caption(@L["IsApproved"].Value).Visible(false);
    columns.Add().Type(GridCommandColumnType.Buttons)
    .Buttons(b =>
    {
        b.Add()
           .Hint(@L["RelatedDocumentsReview"].Value)
           .Icon("docfile")  // You can choose any appropriate icon
           .OnClick("onRelatedDocumentsClick")
           .Visible(new JS("hasRelatedDocuments"));

        b.Add().Name(GridColumnButtonName.Edit).Visible(Model.editBool);

        b.Add().Name(GridColumnButtonName.Delete).Visible(Model.deletetBool);
       
    });


})
.ColumnChooser(cc => cc.Enabled(false))
.Editing(editing =>
{
    editing.Mode(GridEditMode.Popup);

    editing.AllowUpdating(Model.editBool);
    editing.AllowAdding(Model.addBool);
    editing.UseIcons(true);
    editing.AllowDeleting(Model.deletetBool);
    editing.Texts(t =>
 {
     t.ConfirmDeleteMessage(@L["DeleteMsg"].Value);
     t.ConfirmDeleteTitle(@L["Delete"].Value);
     t.DeleteRow(@L["Delete"].Value);
     t.SaveRowChanges(@L["Save"].Value);
     t.CancelRowChanges(@L["Cancel"].Value);

     t.AddRow(@L["Add"].Value);
     t.EditRow(@L["Edit"].Value);

 });
    editing.Popup(p => p
    .Title(@L["Topics"].Value)
    .CloseOnOutsideClick(true)
    .ShowTitle(true)

    .Width(645)
    .Height(455)
    .ResizeEnabled(true)
    .OnInitialized("onShowing")



);
asp.net asp.net-core-mvc devexpress devextreme
1个回答
0
投票

当我们想要将本地化应用到 js 组件中时,当我们确实像您对我们自己管理的变量所做的那样,例如

t.AddRow(@L["Add"].Value);
。对于其他元素,例如确认对话框中的“是”和“否”按钮,如果组件没有提供用户自定义内容的选项,我们只能尝试检查是否有内置的本地化功能。

这就是我在 DevExtreme DataGrid 中发现的,它为我们提供了本地化的支持。这是支持的语言消息(使用Dictionaries

enter image description here

如果我们想对所有页面应用本地化,我们可以在_layout.cshtml中设置脚本和

DevExpress.localization.locale("de");
。这是样本

© www.soinside.com 2019 - 2024. All rights reserved.