0

메신저를 사용하여 검도 UI apsnet을 사용하고 난 3 열의 템플릿으로 autocomptele과 Gird를 가지고 있고이 함수에서 "onAutoCompleteX"라는 자바 함수를 사용하여 데이터를 보내고 싶습니다.이 ID를 얻으려고합니다. 활성 자동 완성 행동 "GetArticle"에 parametere로 텍스트를 보낼 수 있지만 내 probleme, 나는 "정의되지 않은"얻거나 오류가 항상 많은 방법을 시도하는 방법이 ID를 얻을 수있다검도 UI 그리드 현재 요소 자바 스크립트

@using KendoUIMvcApplication2.Areas.Gescom.Models.Achat 


<style> 
    .k-widget .templateCell 
    { 
     overflow: visible; 
    } 
</style> 
<script> 
    function initMenus(e) { 
     $(".templateCell").each(function() { 
      eval($(this).children("script").last().html()); 
     }); 
    } 

    function onAutoCompleteSelectX(e) { 
     var dataItem = this.dataItem(e.item.index()); 
     var url = '@Url.Action("GetArticle", "Fiche")'; 

     $.ajax({ 
      url: url, 
      data: { code: dataItem.Code }, //parameters go here in object literal form 
      type: 'GET', 
      datatype: 'json', 
      success: function (data) { 
       if (data == null) 
        document.getElementById('labelx').innerHTML = "null"; 
       else 
        document.getElementById('labelx').innerHTML = data.Code; 
      }, 
      error: function() { 
       document.getElementById('labelx').innerHTML = "error"; 
      } 
     }); 
    } 


    function onAutoCompleteX() { 
     var currentId = $(this).attr('id'); 
     //var currentId = $(this).id; 
     //document.getElementById('labelx').innerHTML = $(this).className; //$obj.attr('id'); 
     return { 
      text: document.getElementById(currentId).value 
      //text: $("#id_of_another_autocomplete").val() works fine when i set static id manually 
     }; 
    } 
</script> 

<div class="lines-tab-doc"> 
    @(Html.Kendo().Grid<LineAppelOffre>() 
     .Name("grid-lines-doc") 

     // Declare grid column 
     .Columns(columns => 
     { 
      // Cretae all the columns base on Model 
      columns.Bound(l => l.Document); 
      columns.Bound(l => l.LigneOriginale); 
      columns.Template(l => { }).Title(@Resources.Resource.Article) 
       .HtmlAttributes(new { @class = "templateCell" }) 
       .ClientTemplate(
        Html.Kendo().AutoComplete() 
        .Name("Article") 
        .HtmlAttributes(new { id = "#=LigneOriginale#", style = "width:100%;" }) 
        .DataTextField("Code") 
        .Filter(FilterType.Contains) 
        .DataSource(source => 
         { 
          source.Read(read => 
           { 
            read.Action("GetArticles", "Fiche").Data("onAutoCompleteX"); 
           }) 
          .ServerFiltering(true); 
         }) 
        .Events(e => { e.Select("onAutoCompleteSelectX"); }).ToClientTemplate().ToHtmlString() 
      ); 
      columns.Bound(l => l.Fournisseur); 
      columns.Bound(l => l.RefArtFrs); 

      // Edit and Delete button column 
      columns.Command(command => 
      { 
       command.Edit(); 
       command.Destroy(); 
      }).Width(200); 
     }) 
     .Events(ev => ev.DataBound("initMenus")) 
     // Declare ajax datasource. 
     // CRUD operation are wired back to ASP MVC Controller/Action e.g. HomeController, GetAll 
     // Set the model Id 
     .DataSource(datasoure => datasoure.Ajax() 
            .Model(model => 
             { 
              //model.Id(l => l.Document); 
              model.Id(l => l.LigneOriginale); 
             }) 
            .Read(read => read.Action("LinesAppelOffre_Read", "Achat")) 
            .Create(create => create.Action("LinesAppelOffre_Add", "Achat")) 
            .Update(update => update.Action("LinesAppelOffre_Update", "Achat")) 
            .Destroy(delete => delete.Action("LinesAppelOffre_Delete", "Achat")) 
            .PageSize(10) 
     ) 

     // Add tool bar with Create button 
     .ToolBar(toolbar => toolbar.Create()) 

     // Set grid editable. 
     .Editable(editable => editable.Mode(GridEditMode.InCell)) 

     .Scrollable(scr=>scr.Height(327)) 
     .Sortable() 
     .Selectable() 
     .Navigatable() 
     .Pageable(pageable => 
         { 
          pageable.Refresh(true); 
          pageable.PageSizes(true); 
          pageable.Messages(msg => msg.Empty(null)); 
         }) 
    ) 
</div> 

답변

0

은 내가 document.activeElement

브라우저 호환성

크롬이

파이어 폭스 (게코) 3.0

인터넷 익스플로러 4

오페라 9.6

사파리 4.0

을 사용
0

당신은 얻을 수처럼 자동 완성 ID :

function onAutoCompleteX(e) { 
    var currentId = e.sender.element.attr('id'); 
    ... 
} 

하지만 명확한 이름이 있으면 잘 모르겠습니다. "Article".Name("Article").HtmlAttributes 속성을 사용하여 설정 한 경우에도 항상 "Artilcle"을 ID로 사용하지는 않습니다.

그렇다면 다른 속성을 사용하려고 시도하면 id와 get이 같은 방식입니다.

+0

e.sender = undefined '.HtmlAttributes (새로운 {id = "# = LigneOriginale #", style = "너비 : 100 %;"})의 id를 설정합니다. mean id = lineNumber – Xgamerz