2014-04-02 65 views
0

我已经与行选择启用和一个命令按钮(click事件)网格剑道UI格 - 与命令按钮的点击行选择

“一般”当我按下按钮,按钮,相应的行选中,然后触发按钮的单击事件 这是正确的行为,我想要! 但“某个时候”该行的选择并不accour,只是按钮的单击事件被触发

我无法重现上拨弄所有的代码,但我会给你这个细节在这里下面

在第一i已经认为这是我想“定时问题” 认为“某个”的选择需要更多的时间为:[剑术使用的版本剑道UI完成v2013.1.319]

var Master = {}; 
Master._height = null; 
Master._resSolDataSource = null; 
Master._followUpDataSource = null; 
Master._filter = {}; 
Master.SelectedDocument = {}; 
Master.followUpWindow = null; 

Master.init = function() { 

    Master._resSolDataSource = new kendo.data.DataSource({ 
     ......... 
     .... 
    }); 


    //Inizialize the adminGrid 
    $("#adminGrid").kendoGrid({ 
     autoBind: false, 
     dataSource: Master._resSolDataSource, 
     selectable: true, 
     pageable: true, 
     change: Master.onRowChange, 
     heigt: 300, 
     columns: [{ 
      field: "Id", 
      hidden: true 
     }, { 
      field: "Piva", 
      title: "Partiva IVA" 
     }, { 
      field: "RagioneSociale", 
      title: "Ragione Sociale" 
     }, { 
      field: "Data", 
      format: "{0:dd/MM/yyyy}" 
     }, { 
      field: "Diniego", 
      title: "Diniego" 
     }, { 
      field: "AnnoRiferimento", 
      title: "Anno di riferimento" 
     }, { 
      field: "MeseRiferimento", 
      title: "Mese di riferimento" 
     }, { 
      field: "Stato" 
     }, { 
      command: [ 
       { 
        name: "download", 
        click: Master.download 
       } 
      ], 
      title: " ", 
      width: 180 
     }] 
    }); 

    //double click has the same behaviour of the button click 
    $("#adminGrid").delegate("tbody>tr[role=row]", "dblclick", Master.download); 

    $("#btnSearch").click(function() { 
     ..... 
     .... 
     //load data 
     Master._resSolDataSource.read(); 
    }); 
} 

//richiamato ogni volta che si clicca su una riga (se la griglia è selectable: true) 
Master.onRowChange = function() { 

    var model = this.dataItem(this.select()); 

    Master.SelectedDocument = {}; 
    Master.SelectedDocument.IdDocument = model.Id; 
    Master.SelectedDocument.Stato = model.Stato; 
    Master.SelectedDocument.AnnoRiferimento = model.AnnoRiferimento; 
    Master.SelectedDocument.MeseRiferimento = model.MeseRiferimento; 
    Master.SelectedDocument.Piva = model.Piva; 
} 


//this is called by the button's click 
Master.download = function (e) { 

    //e.preventDefault(); 

    var selDoc = {}; 

    selDoc.IdDocument = Master.SelectedDocument.IdDocument; 
    selDoc.status = Master.SelectedDocument.Stato; 
    selDoc.AnnoRiferimento = Master.SelectedDocument.AnnoRiferimento; 
    selDoc.MeseRiferimento = Master.SelectedDocument.MeseRiferimento; 
    selDoc.Piva = Master.SelectedDocument.Piva; 

    $.ajax({ 
     type: "POST", 
     url: 'PdfManager/Index', 
     data: JSON.stringify(selDoc), 
     contentType: "application/json; charset=utf-8", 
     //dataType: "text", 
     dataType: "html", 
     success: function (event) { 
      var win = window.open(); 
      win.document.write(event); 
     } 
    }); 
} 

1)选中,所以按钮的点击事件首先发生。为了解决这个问题我已经尝试过通过

setTimeout的包裹按钮的Click事件的所有代码(函数(){ .... //点击事件代码 },1000);

也与这个问题仍然存在随机

2)我试图使用e.preventDefault();在按钮的单击事件的开始处,以避免按钮标记中的某些内容出现干扰,但这不起作用

你能帮助我吗?你有什么建议去调查吗?

你能建议我任何链接,资源,视频,课程学习像剑道一样的debbugging javascript框架,一步一步地观看当我点击一个按钮时发生了什么(在我的情况下,了解在什么情况下行不是选择) 很难调试这样的应用程序,如果一个人不具备这方面的知识

给我一个手pleaseeeee

+0

我已经用highligt问题更新了我的答案 – Vojtiik

+0

您是否设法使其工作? – Vojtiik

回答

1

当您单击自定义命令(按钮),在onChange事件不火,因此您在Master.SelectedDocument中没有任何内容,并且选择未发生。从Master.download函数中进行选择。

尝试下面的代码:

Master.download = function (e) { 
    e.preventDefault(); 

// get the row with the button  
var dataItem = this.dataItem($(e.currentTarget).closest("tr")); 

// get the values to your payload object 
var selDoc = {}; 
    selDoc.IdDocument = dataItem.IdDocument; 
    selDoc.status = dataItem.Stato; 
    selDoc.AnnoRiferimento = dataItem.AnnoRiferimento; 
    selDoc.MeseRiferimento = dataItem.MeseRiferimento; 
    selDoc.Piva = dataItem.Piva; 

$.ajax({ 
     type: "POST", 
     url: 'PdfManager/Index', 
     data: JSON.stringify(selDoc), 
     contentType: "application/json; charset=utf-8", 
     //dataType: "text", 
     dataType: "html", 
     success: function (event) { 
      var win = window.open(); 
      win.document.write(event); 
     } 
    }); 
} 

这种方法并忽略onchange情况下,如果你需要使用onchange它仍然需要改变其他用途。

您可以从自定义命令手动突出:

$(e.currentTarget).closest("tr").addClass('highligted') 

或者看看是否这会工作:

grid.select($(e.currentTarget).closest("tr")); 
0

点击按钮“某个时候”的事件引发,有时不是(I”我已经用浏览器的开发工具 - IE/Firefox删除了这个)......我不明白为什么。

无论如何,你suggestd我,我赶选择到

Master.download = function (e) { 

    e.preventDefault(); 

    var model = this.dataItem($(e.currentTarget).closest("tr")); 
    Master.SelectedDocument = {}; 
    Master.SelectedDocument.IdDocument = model.Id; 
    Master.SelectedDocument.Stato = model.Stato; 
    Master.SelectedDocument.AnnoRiferimento = model.AnnoRiferimento; 
    Master.SelectedDocument.MeseRiferimento = model.MeseRiferimento; 
    Master.SelectedDocument.Piva = model.Piva; 
    ...... 

,实际效果很好(GREAT !!!!),在这个意义上,我得到正确的数据行,所以我能正确地做其他事情

但问题是,行不“突出了”持续存在(因为你说我的变化事件没有发生)

现在,我可以选择行“编程“为了提高onchange事件”始终“=

+0

对不起Bobby_D_,这篇文章是在你的一个 – alex

+0

之后它在这里工作的方式是你不回答你自己的问题与其他答案。如果您发现我的回答对您有帮助+1或标记为正确,并在评论中提出其他问题或提出全新的帖子。这是其他开发人员下次可以使用并将答案用作参考。 – Vojtiik

+0

我用高亮代码更新了我的答案 – Vojtiik