連絡先グリッド内に名前のオートコンプリート フィールドがあります。
ユーザーが名前を入力し、リストから名前を選択すると、その他の連絡先の詳細が自動的に入力されるようにする必要があります。これは正常に動作しています。
ただし、ユーザーは、リストにない人の詳細を手動で入力して保存することもできる必要があります。これは起こっていません。名前フィールドがフォーカスを失った後、値はまだそこにあります。保存後、列に適切にバインドされていないため、値は表示されなくなります。
この回答のアドバイス(ViewDataを使用したくないため、オプション1)に従いましたが、値を適切にバインドできません。
オートコンプリート ウィジェットに列フィールドと同じ名前を付けると、オートコンプリートは機能せず、フィールドは通常のテキスト フィールドになります。オートコンプリート ウィジェットに別の名前を付けると、入力フィールドはウィジェット名のオートコンプリート フィールドになりますが、データは列にバインドされません。
列宣言
.Columns(columns =>
{
columns.Bound(e => e.Name).EditorTemplateName("NameLookupConcatenated");
columns.Bound(e => e.Phone);
columns.Bound(e => e.Email);
columns.Command(command => { command.Edit(); command.Destroy(); });
})
グリッド モデル
public int ID { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
オートコンプリート
@model string
@(Html.Kendo().AutoComplete()
.Name("concatenated")
.DataTextField("Concatenated")
.Filter("contains")
.DataSource(source => source.Read(read => read.Action("GetUserInfo", "Contacts")
.Data("onAdditionalData"))
.ServerFiltering(true))
.Events(e => e.Select("onUserSelect"))
)
オートコンプリート モデル
public string Email { get; set; }
private string FirstName { get; set; }
private string LastName { get; set; }
public string Concatenated
{
get { return string.Format("{0} {1}", FirstName, LastName); }
}
public string TelePhoneNo { get; set; }