序章:
値と呼ばれるフィールドを持つグリッドがあり、そのフィールドはユーザーが編集できます。
私のモデルには、PossibleValuesを含むIEnumerableリストがあります。ユーザーが編集しようとしたときにPossibleValues = Empty(グリッドのValueフィールド)の場合、デフォルトでテキストボックスを表示する必要がありますが、PossibleValuesにValuesがある場合は、すべての可能な値を含むDropDownList。
問題:
編集モードでUIHintを使用すると、dropDownListを表示できますが、現在のモデルをOverriedViewに送信する方法がわかりません...
コード:
モデル:
public class FamilyParameter
{
public FamilyParameter()
{
PossibleValues = new List<string>();
}
[DisplayName("Value")]
[UIHint("_FamilyParameterValue")]
public string Value { get; set; }
public IEnumerable<string> PossibleValues { get; set; }
}
}
表示:Shared / EditorTemplates / _FamilyParameterValue.cshtml
@model Bpt.Domain.FamilyParameter
@Html.Telerik().DropDownList().Name("demo");
ビュー:メイン
<div style="height:270px" >
<table>
<tr>
<td width="100%">
<br />
@(Html.Telerik().Grid<FamilyParameter>()
.Name("GridParam")
.DataKeys(keys => keys.Add(param => param.Code))
.HtmlAttributes(new { style = "width: 420px;" })
.NoRecordsTemplate("No existen resultados...")
.DataBinding(
dataBinding => dataBinding.Ajax()
.Select("_EditMaterial_SelectParameters", Controllers.Valoration,Model)
.Update("_EditMaterial_UpdateParameters", Controllers.Valoration,Model)
)
.Columns(columns =>
{
columns.Bound(param => param.Code).Width("75px").HtmlAttributes(new { style = "text-align: left;" }).ReadOnly();
columns.Bound(param => param.Description).Width("200px").HtmlAttributes(new { style = "text-align: left;" }).ReadOnly();
columns.Bound(param => param.Value).Width("65px").HtmlAttributes(new { style = "text-align: left;" });
columns.Command(commands =>
commands.Edit().ButtonType(GridButtonType.Image)
).Width(60);
})
.Editable(editing => editing.Mode(GridEditMode.InLine))
.Scrollable(scrolling => scrolling.Height(140))
.Footer(false)
.Sortable()
.Resizable(resizing => resizing.Columns(true))
.Reorderable(reorder => reorder.Columns(true))
)
</td>
</tr>
</table>
</div>