7
votes

Changer le format de filtre numérique Kendo

J'applique une pagination personnalisée et un tri dans la grille de Kendo. Pour une de mes colonnes, je reçois une zone de texte numérique. Lorsque j'insère la valeur dans la zone de texte numérique, il est entier, mais comme la mise au point est retirée de la zone de texte numérique du filtre, elle convertit en décimal. Pour par exemple: Si je suis entré 32, il reste 32, mais comme l'ajout de la valeur de 32,00. Mais je veux que cette valeur reste 32.

On peut donc m'aider avec la solution.


0 commentaires

8 Réponses :


-1
votes

Définissez simplement le format de colonne:

c.Bound(x => x.ColumnName).Format("{0:#}");


1 commentaires

Cela n'a pas fonctionné que cela a défini le format pour les données affichées dans la colonne, mais les données sont affichées dans le filtre pour être au format non décimal.



0
votes

Vous pouvez définir le format sur le filtrable sur la colonne, comme celui-ci: xxx

update Ceci est la version JavaScript. Voici ma définition complète de la grille: xxx


0 commentaires

17
votes

Vous pouvez définir comme ci-dessous xxx

ou Utilisez la méthode d'extension xxx


5 commentaires

J'ai beaucoup essayé, mais je n'ai pas eu d'expression de Lambda dans le champ filtrable "filtrable (x => x.ui (" numericfilter "));". Avons-nous besoin d'ajouter des JS ou quelque chose?


Je pense que non. J'utilise Kendo MVC 2013.2.716.340 Vérifiez également votre web.Config avoir la ligne ci-dessous


J'ai cette définition i Web config. Mais la version que j'utilise est la suivante: 2012.2.913.340. Donc, peut-être que c'est la raison pour laquelle je ne reçois pas l'expression de la Lambda.


Cette solution fonctionne bien mais insère toujours des virgules séparateur lorsque les boîtes de texte numériques perdent la mise au point. Voir la solution ci-dessous par @kamran pour résoudre ce problème.


Merci bien de travailler :). Pour la méthode d'extension, veuillez utiliser "Utilisation de System.Linq.Expressions;" Espace de noms.



1
votes

Réglez la colonne de filtrage sous

p>

column.filterable = {
    ui: numberFilter,
    cell: {
        template: numberFilter,
    }
};

function numberFilter(args) {
    var element = args instanceof jQuery ? args : args.element;
    element.kendoNumericTextBox({
        format: "n0"
    });
}


0 commentaires

-1
votes

sur Kendo numerItextBox, le format est utilisé pour formater le contenu de l'entrée lorsqu'il n'est pas ciblé. Vous avez utilisé des décimales du format du format lors de sa focalisation. Par exemple, voici une numéritextbox (ASP.NET) montrant toujours entier: xxx

espère que cela aidera quelqu'un.


0 commentaires

1
votes

Qu'est-ce que Palani Kumar em> a déclaré que les séparateurs encore insérés, il convertit 12345 à 12 345; Donc, je recommande le code modifié ci-après au cas où vous voudriez des chiffres pure sans formatage (aucun séparateur, aucun point décimal, etc.).

columns.Bound(x => x.Property).Filterable(x => x.UI("numericFilter"));

<script type="text/javascript">
    function numericFilter(control) {
        $(control).kendoNumericTextBox({ format: "#", decimals: 0 });

    }
</script> 


0 commentaires

3
votes

J'avais le même problème et les mêmes colonnes.bound (x => x.property) .Filtrerable (x => x.ui ("numériquefilter")); ne travaillait pas pour moi. Piggy Support de Xavier John's Réponse J'ai utilisé Colonnes.FilterABLABLE.Cell.Template Pour résoudre mon problème, car la documentation de Telerik stipule:

Colonnes.FilterAble.UI String | Fonction P>

L'attribut de données de rôle du widget utilisé dans le menu du filtre ou une fonction JavaScript qui initialise ce widget. P>

Cette fonctionnalité n'est pas prise en charge pour les colonnes qui ont leur option de valeurs. Si filtrable.mode est défini sur 'rangée', colonnes.filterable.cell.template doit être utilisé pour personnaliser l'entrée. P> blockQuote> blockQuote>

http: //docs.telerik.com/kendo-ui/api/javascript/ui/grid#configuration-columns.filterable.ui p>

Voici mon code P>

    @(Html.Kendo().Grid<UnsoldStockBO.USS_STOCK>()
        .Name("searchGrid")
        .Columns(columns =>
        {
            columns.Bound(c => c.CyAbbrev);
            columns.Bound(c => c.UssCrop).Filterable(filter => filter.Cell(c => c.Template("IntegerFilter")));
            columns.Bound(c => c.TtAbbrev);
            columns.Bound(c => c.PtAbbrev);
            columns.Bound(c => c.UssInternalGrade);
            columns.Bound(c => c.SuggestedPrice).Format("{0:c2}").Filterable(filter => filter.Cell(c => c.Template("NumericFilter")));
            columns.Bound(c => c.UssCtPricePerKilo).ClientTemplate("#:kendo.toString(UssCtPricePerKilo, 'c', Culture)#").Filterable(filter => filter.Cell(c => c.Template("NumericFilter")));
            columns.Bound(c => c.UssNetKilos).Format("{0:n}").Filterable(filter => filter.Cell(c => c.Template("NumericFilter")));
            columns.Bound(c => c.UssWriteDownCount).Format("{0:n0}").Filterable(filter => filter.Cell(c => c.Template("IntegerFilter")));
            columns.Command(command =>
            {
                command.Edit().HtmlAttributes(new { @title = "Quick Edit" });
                command.Custom("EditStock").HtmlAttributes(new { @title = "Edit" });
                command.Destroy().HtmlAttributes(new { @title = "Delete" });
            }).HtmlAttributes(new { @nowrap = "nowrap" });
        })
        .Mobile()
        .ToolBar(toolbar => toolbar.Custom().Text("Add Stock").Action("Create", "Stock").Name("AddStock"))
            .Editable(editable => editable.Mode(GridEditMode.InLine).DisplayDeleteConfirmation("This record will be permanently deleted and cannot be recovered. Are you sure?"))
            .Filterable(ftb => ftb.Mode(GridFilterMode.Row))
            .Sortable()
            .Pageable()
            .Events(e => e.DataBound("onDataBound").Cancel("onCancel"))
        .NoRecords("No records found.")
        .Resizable(resize => resize.Columns(true))
        .DataSource(dataSource => dataSource
            .WebApi()
            .ServerOperation(true)
            .PageSize(30)
                        .Events(events => events.Error("error_handler").Sync("sync_handler"))
                    .Model(model =>
                    {
                        model.Id(p => p.UssId);
                        model.Field(c => c.CyAbbrev).Editable(false);
                        model.Field(c => c.UssCrop).Editable(false);
                        model.Field(c => c.TtAbbrev).Editable(false);
                        model.Field(c => c.PtAbbrev).Editable(false);
                        model.Field(c => c.UssInternalGrade).Editable(false);
                        model.Field(c => c.SuggestedPrice).Editable(false);
                    })
                    .Read(read => read.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "webapi", action = "UnsoldStock_Get", userId = ((UnsoldStockBO.PSI_USER)Session["USS_User"]).UUid })))
                                .Update(update => update.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "webapi", action = "UnsoldStock_Update", userName = ((UnsoldStockBO.PSI_USER)Session["USS_User"]).UUserName })).Type(HttpVerbs.Post))
                                    .Destroy(destroy => destroy.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "webapi", action = "UnsoldStock_Delete", id = "{0}", userName = ((UnsoldStockBO.PSI_USER)Session["USS_User"]).UUserName })).Type(HttpVerbs.Delete))

                )
    )

<script type="text/javascript">

    function IntegerFilter(args) {
        args.element.kendoNumericTextBox({ format: "#", decimals: 0, spinners: false });
    }

    function NumericFilter(args) {
        args.element.kendoNumericTextBox({ spinners: false });
    }

</script>


0 commentaires

0
votes

pour la grille de base ASP.NET: colonnes.bound (C => C.Expenditure) .format ("{0: #, ###. 00}"). Largeur (75);


0 commentaires