0

連絡先グリッド内に名前のオートコンプリート フィールドがあります。

ユーザーが名前を入力し、リストから名前を選択すると、その他の連絡先の詳細が自動的に入力されるようにする必要があります。これは正常に動作しています。

ただし、ユーザーは、リストにない人の詳細を手動で入力して保存することもできる必要があります。これは起こっていません。名前フィールドがフォーカスを失った後、値はまだそこにあります。保存後、列に適切にバインドされていないため、値は表示されなくなります。

この回答のアドバイス(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; }
4

1 に答える 1

0

ID「名前」の入力要素がページに既に存在することがわかりました。これにより、グリッドが編集モードで、オートコンプリートが適切な要素に関連付けられていない場合に、ID の重複が発生していました。

私の作業コード:

.Columns(columns =>
      {
          columns.Bound(e => e.ConcatName).EditorTemplateName("NameLookupConcatenated"); //changed name here
          columns.Bound(e => e.Phone);
          columns.Bound(e => e.Email);
          columns.Command(command => { command.Edit(); command.Destroy(); });
      })

上記の列の名前を変更し、オートコンプリートの「名前」プロパティを列名と一致するように設定しました。

@(Html.Kendo().AutoComplete()
.Name("ConcatName")
.DataTextField("Concatenated")
.Filter("contains")
.DataSource(source => source.Read(read => read.Action("GetUserInfo", "Contacts")
    .Data("onAdditionalData"))
    .ServerFiltering(true))
    .Events(e => e.Select("onUserSelect"))
)
于 2015-01-15T19:15:12.227 に答える