如何调用外部javascript函数到ClientSideEvents.Click事件?

时间:2017-05-19 09:02:31

标签: javascript devexpress

我有一个DevExpress()。网站上的按钮应该从焦点行获取特定网格值并将其传递给外部函数。

这是我的按钮:

@Html.DevExpress().Button(
             settings =>
             {
                 settings.Name = "btnMyName";
                 settings.Width = 120;
                 settings.Height = 25;
                 settings.Text = "MyText";
                 settings.Styles.Native = true;
                 settings.ClientEnabled = true;
                 settings.ClientSideEvents.Click = "function(s, e) { gridView.GetRowValues(gridView.GetFocusedRowIndex(), 'MyValue', OnGetRowValues); }";
}).GetHtml()

我根本无法达到OnGetRowValues函数 - 总是得到相同的异常:

  

未捕获的ReferenceError:未定义OnGetRowValues

我将脚本放在与.cshtml文件相同的文件夹中,并尝试以相对和绝对的方式使用<script src=""></script>引用它。我试图让代码直接在脚本标签之间运行到cshtml页面,但没有任何作用,我总是得到相同的错误。到目前为止唯一的解决方案是将整个脚本作为ClientSideEvents.Click的辅助,但由于OnGetRowValues函数很大,它将变得凌乱且彻头彻尾的不切实际的解决方案。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

浏览Client-Side Events文档并使用以下示例实现:

<script type="text/javascript" src="~/Content/js/index.js"></script>
<script type="text/javascript">

    function ButtonClick(s,e)
    {
        gridView.GetRowValues(gridView.GetFocusedRowIndex(), 'ShipName', OnGetRowValues);
    }
</script>
@Html.DevExpress().Button(settings =>
{
    settings.Name = "btnGetSelectedRowValue";
    settings.UseSubmitBehavior = true;
    settings.ClientSideEvents.Click = "ButtonClick";
}).GetHtml()


@Html.Action("GridViewPartial")

index.js

// Value contains the "EmployeeID" field value returned from the server, not the list of values 
function OnGetRowValues(Value) {
    // Right code 
    alert(Value);
    // This code will cause an error 
    // alert(Value[0]); 
}

希望这有帮助..