剣道グリッドにカスタムのページングとソートを適用しています。私の列の 1 つで、数値テキスト ボックスを取得しています。数値テキスト ボックスに値を挿入すると整数ですが、フィルターの数値テキスト ボックスからフォーカスを外すと、10 進数に変換されます。例: 32 を入力した場合、32 のままですが、フォーカスが削除されると、値は 32.00 になります。しかし、私はその値を32のままにしておきたい.
誰でも解決策を教えてください。
剣道グリッドにカスタムのページングとソートを適用しています。私の列の 1 つで、数値テキスト ボックスを取得しています。数値テキスト ボックスに値を挿入すると整数ですが、フィルターの数値テキスト ボックスからフォーカスを外すと、10 進数に変換されます。例: 32 を入力した場合、32 のままですが、フォーカスが削除されると、値は 32.00 になります。しかし、私はその値を32のままにしておきたい.
誰でも解決策を教えてください。
以下のように設定できます
columns.Bound(x => x.Property).Filterable(x => x.UI("NumericFilter"));
<script type="text/javascript">
function NumericFilter(control) {
$(control).kendoNumericTextBox({ "format": "n0", "decimals": 0 });
}
</script>
または拡張メソッドを使用する
columns.NumericColumn(x => x.Property);
public static GridBoundColumnBuilder<TModel> NumericColumn<TModel, TValue>(this GridColumnFactory<TModel> Column, Expression<Func<TModel, TValue>> Expression) where TModel : class
{
return Column.Bound(Expression).Filterable(x => x.UI("NumericFilter"));
}
私は同じ問題を抱えていて、columns.Bound(x => x.Property).Filterable(x => x.UI("numericFilter")); 私のために働いていませんでした。ザビエル・ジョンの答えを裏切るピギー私は問題を解決するためにcolumns.filterable.cell.templateを使用しました。
columns.filterable.ui 文字列 |関数
フィルター メニューで使用されるウィジェットのロール データ属性、またはそのウィジェットを初期化する JavaScript 関数。
この機能は、値のオプションが設定されている列ではサポートされていません。filterable.mode が「row」に設定されている場合、columns.filterable.cell.template を使用して入力をカスタマイズする必要があります。
http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#configuration-columns.filterable.ui
これが私のコードです
@(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>
パラニ・クマールが言ったことは、依然としてセパレーターを挿入します。つまり、12345 を 12,345 に変換します。したがって、フォーマットなしの純粋な数値が必要な場合(区切り記号や小数点などなし)、次の編集済みコードをお勧めします。
columns.Bound(x => x.Property).Filterable(x => x.UI("numericFilter"));
<script type="text/javascript">
function numericFilter(control) {
$(control).kendoNumericTextBox({ format: "#", decimals: 0 });
}
</script>
Kendo UI Filter で同じ問題に直面していましたが、うまくいきませんでした。すなわち:
columns.Bound(x => x.ColumnName).Filterable(x => x.UI("numericFilter"));
しかし、これを試すことができます:
.DataSource(dataSource => dataSource
.Ajax()
.Model(model =>
{
model.Id(p => p.ColumnID);
model.Field("ColumnName", typeof(string));
})
.PageSize(20)
)
次のように、列のフィルター可能なものにフォーマットを設定できます。
field: "TaskId",
title: "TaskId",
width: 80,
filterable: {
ui: function (element) {
element.kendoNumericTextBox({
format: "n0"
});
}
}
更新 これは JavaScript のバージョンです。ここに私の完全なグリッド定義:
$("#uxRunningTasksGrid").kendoGrid({
dataSource: runningTasksDataSource,
height: $(document).height() - 280,
autoBind: true,
filterable: true,
sortable: true,
pageable: false,
reorderable: true,
resizable: true,
columns: [{
command: { text: "Details", click: openDetails }, title: " ", width: 80
},
{
field: "TaskId",
title: "TaskId",
width: 80,
filterable: {
ui: function (element) {
element.kendoNumericTextBox({
format: "n0"
});
}
}
}
]
};
Kendo NumericTextBox では、フォーカスされていないときに入力の内容をフォーマットするために Format が使用されます。入力がフォーカスされている場合は、入力に Decimals du format を使用する必要があります。たとえば、常に整数を示す NumericTextbox (asp.net) は次のとおりです。
@(Html.Kendo().NumericTextBox<decimal>()
.Name("Total")
.Format("n0")
.Decimals(0)
)
それが誰かを助けることを願っています。
列形式を設定するだけです。
c.Bound(x => x.ColumnName).Format("{0:#}");