0

即时通讯使用剑道UI apsnet,我有一个网格autocomptele作为模板在第三列,我想发送数据使用JavaScript函数“onAutoCompleteX”,在这个函数中我想获得ID积极自动完成发送文本parametere行动“GetArticle”但我probleme是怎么得到这个ID,试过很多方法我总是得到“未定义”或错误剑道UI网格获取当前元素的id javascript

@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

浏览器兼容性

铬2

火狐(壁虎)3.0

Internet Explorer 4中

歌剧9.6

的Safari 4.0

0

你可以得到你自动完成ID这样的:

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

但我不确定您是否有明确的名称s“文章”.Name("Article")即使您使用.HtmlAttributes属性设置它,您也不会总是获得“Artilcle”作为ID。

如果是这样,只是尝试使用不同的属性,然后id和get是相同的方式。

+0

e.sender = undefined 我在'.HtmlAttributes(new {id =“#= LigneOriginale#”,style =“width:100%;”})中设置了ID,' mean id = lineNumber – Xgamerz