列の1つがブール値用の剣道グリッドビューを持っています。列には、"true" (1 または true の場合)、"false" (0 または false の場合)、または空白 (null の場合) のいずれかのラベルが付いた情報が表示されます。これはあまりプロフェッショナルに見えません。グリッド内のこれらの値を変更して、代わりに [はい]、[いいえ]、または [なし] (それぞれ) として表示されるようにしています。これを実現するために使用しているコードは次のとおりです。
モデル:
namespace MvcApplication.Models
{
public class Companies
{
public string IsAdmitted { get; set; }
コントローラ:
[HttpPost]
public ActionResult Companies_Read([DataSourceRequest] DataSourceRequest request)
{
using (var companydata = new CompaniesDataContext())
{
List<Companies> model = new List<Companies>();
var companylist = companydata.Companies_JBs.Select(s => s).ToList();
foreach (var h in companylist)
{
Companies x = new Companies();
x.IsAdmitted = h.IsAdmitted == (bool)true ? x.IsAdmitted = "Yes" : h.IsAdmitted == (bool)false ? x.IsAdmitted = "No" : x.IsAdmitted = "Null";
model.Add(x);
}
return Json(companydata.Companies_JBs.ToDataSourceResult(request));
}
}
意見:
@(Html.Kendo().Grid(Model)
.Name("Company_Grid")
.Columns(columns =>
{
columns.Bound(o => o.IsAdmitted).Title("Admitted:").Width(95);
columns.Command(command => { command.Edit(); command.Destroy(); });
}
)
.ToolBar(toolbar => toolbar.Create().Text("Add a Company"))
.Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("Companies"))
.Pageable()
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:430px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Events(events => events.Error("error_handler"))
.Model(model => model.Id(o => o.ID))
.Create(update => update.Action("Companies_Create", "Home"))
.Update(update => update.Action("Companies_Update", "Home"))
.Destroy(update => update.Action("Companies_Destroy", "Home"))
.Read(read => read.Action("Companies_Read", "Home"))
)
)
ブレークポイントを設定して値を確認すると、IsAdmitted フィールド アイテムに [はい]、[いいえ]、または [なし] のラベルが付けられていることがわかります (SQL データベースの値に応じて)。ただし、グリッド自体では、まだ true、false、または空白のラベルが付いています。ここで私の問題は何ですか、またはこれを行うためのより良い方法はありますか?