通过GridView的客户端API访问行数据

时间:2012-12-14 14:31:53

标签: javascript asp.net asp.net-mvc devexpress aspxgridview

我的Asp.NET MVC 4应用程序中有一个DevExpress GridView,想要通过JavaScript访问客户端的行数据。目前我正在做以下事情:

指定应将哪些值传输到js函数ChangeDetailsTab:

function OnGridFocusedRowChanged(s, e) {
        s.GetRowValues(s.GetFocusedRowIndex(),
            'MOL_REGID;BATCH_NAME;MOL_NAME;MOL_ENTERED_BY;', ChangeDetailsTab);
}

从ChangeDetailsTab收到的数组中访问值:

function ChangeDetailsTab(rowData) {

    var molRegId= rowData[0];
    var batchName= rowData[1];
    var molName= rowData[2];
    var molEnteredBy= rowData[3];
}

这种方法使得访问大量值或稍后添加/删除值非常糟糕,因为必须在一个大字符串中指定列名(参见示例1第3行)。

有没有人能更好地解决这个问题?

3 个答案:

答案 0 :(得分:2)

客户端 GetRowValues 专为此目的而设计。

我相信这是最好的解决方案。

答案 1 :(得分:2)

这是最好的方法,当然无论如何,你可以在C#Code中调用,在CustomCallback中你可以运行它,在客户端你可以执行的javascript,这样的
ASPxGridView1.PerformCallback()(ASPxGridView1有一个名为CustomCallback的事件),你没有重载页面可以获得C#代码的值 在C#代码:

ASPxGridView1.GetRowValues(ASPxGridView1.FocusedRowIndex,"column1","column2",....)

当然你记得应该从客户端的

中的java脚本中调用此事件

答案 2 :(得分:0)

哪种方法更快?我正在加载多个值,但由于某些原因它似乎很慢。

我所做的设置与您的设置类似,但是我正在加载大约25-30个值。

function insuranceselectionchange() {
   insuranceselection.GetRowValues(insuranceselection.GetFocusedRowIndex(), 'CarrierName;CarrierAddress;CarrierAddress2')
}

function SetInsuranceValues(values) {
   CarrierName.SetText(values[0]);
   CarrierAddress.SetText(values[1]);
   CarrierAddress2.SetText(values[2]);
}