Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DevExpress MVC网格视图_C#_Asp.net Mvc_Gridview_Devexpress_Devexpress Mvc - Fatal编程技术网

C# DevExpress MVC网格视图

C# DevExpress MVC网格视图,c#,asp.net-mvc,gridview,devexpress,devexpress-mvc,C#,Asp.net Mvc,Gridview,Devexpress,Devexpress Mvc,大家好 我正试图用这段代码在网格视图中添加一个额外的列。但当我运行它时。我无法单击栅格视图上的按钮。知道我做错了什么吗。谢谢 settings.Columns.Add(column => { column.FieldName = "Unbound"; column.Caption = "Action"; column.UnboundType = DevExpress.Data.Unbou

大家好 我正试图用这段代码在网格视图中添加一个额外的列。但当我运行它时。我无法单击栅格视图上的按钮。知道我做错了什么吗。谢谢

        settings.Columns.Add(column =>
        {
            column.FieldName = "Unbound";
            column.Caption = "Action";
            column.UnboundType = DevExpress.Data.UnboundColumnType.Object
            column.EditFormSettings.Visible = DevExpress.Utils.DefaultBoolean.True;
            column.ReadOnly = false;
            column.SetDataItemTemplateContent((c) =>
            {

                Html.DevExpress().Button(b =>
                {
                    b.Name = "btnVE" + c.KeyValue;
                    b.Text = "V/E";
                    b.ClientSideEvents.Click =
                    "function(s, e) { document.location='" + DevExpressHelper.GetUrl(new { Controller = "ViewPrincipal", Action = "EditRecord" })
                    + "?key=' + s.GetRowKey(e.visibleIndex); }";

                }).GetHtml();
            });
        });

        settings.Columns.Add("Id");
        settings.Columns.Add("Code");
        settings.Columns.Add("CompanyId");
        settings.Columns.Add("Description");
        settings.Columns.Add("ContactPerson");
        settings.Columns.Add("TelNo");
        settings.Columns.Add("Notes");
更新: 我通过web开发工具在web上发现了这个错误,但我不知道如何修复它

听起来问题源自
s
,它分配给此块上的按钮发送器,而不是
GridView
行:

Html.DevExpress().Button(b =>
{
    b.Name = "btnVE" + c.KeyValue;
    b.Text = "V/E";
    b.ClientSideEvents.Click =
    "function(s, e) { document.location='" + DevExpressHelper.GetUrl(new { Controller = "ViewPrincipal", Action = "EditRecord" })
    + "?key=' + s.GetRowKey(e.visibleIndex); }"; // ==> 's' refers to button object as sender
}).GetHtml();
您应该使用
GridViewDataItemTemplateContainer
对象来获取相应行的
KeyValue
属性,该属性从
GridViewBaseRowTemplateContainer
返回整数值:

column.SetDataItemTemplateContent((c) =>
{
    Html.DevExpress().Button(b =>
    {
        b.Name = "btnVE" + c.KeyValue;
        b.Text = "V/E";
        b.UseSubmitBehavior = false; // prevent default submit action
        b.EnableClientSideAPI = true; // add this line if not sure
        b.ClientSideEvents.Click =
        "function(s, e) { window.location = '" + DevExpressHelper.GetUrl(new { Controller = "ViewPrincipal", Action = "EditRecord" })
        + "?key=" + c.KeyValue.ToString() + "'; }";

    }).GetHtml();
});
或者使用易于阅读的
string.Format()

b.ClientSideEvents.Click = string.Format("function(s, e) {{ window.location = '{0}?key={1}'; }}", 
                           DevExpressHelper.GetUrl(new { Controller = "ViewPrincipal", Action = "EditRecord" }), 
                           c.KeyValue.ToString());
注意事项:

1) 如果要获取行索引,请使用
c.VisibleIndex

2) 出于跨浏览器的考虑,我更喜欢提供的
window.location
而不是
document.location


相关问题:

发现问题。显然,在创建栅格视图之前,应该将其放置在视图的前面。但我想这应该是一个JScript。它应该异步运行。哦,只要能用就行。谢谢你的帮助@tetsuya

 @Html.DevExpress().GetStyleSheets(
        new StyleSheet { ExtensionSuite = ExtensionSuite.NavigationAndLayout },
        new StyleSheet { ExtensionSuite = ExtensionSuite.Editors, ExtensionType = ExtensionType.Button },
        new StyleSheet { ExtensionSuite = ExtensionSuite.GridView }

    )
    @Html.DevExpress().GetScripts(
        new Script { ExtensionSuite = ExtensionSuite.NavigationAndLayout },
        new Script { ExtensionSuite = ExtensionSuite.Editors, ExtensionType = ExtensionType.Button },
        new Script { ExtensionSuite = ExtensionSuite.GridView }
    )

浏览器控制台中是否出现错误?我怀疑您在
s.GetRowKey(e.visibleIndex)
中使用了错误的发件人,发件人是button对象,而不是
MVCxGridView
@tetsuyayayamamoto。。。隐马尔可夫模型。。我甚至不能启动密码。网格视图不允许我单击添加的按钮。我想不出什么代码可以让我点击这个按钮。我在我的主要帖子上得到了一些更新。你能检查一下吗?提供的JS错误似乎被截断了。请以文本而不是图像形式提供错误。另请阅读jQuery绑定。找到了答案。你的回答帮助我认识到一些事情。感谢这给了我一个错误,当我使用您的代码时参数字典包含一个不可为null类型的参数“id”的null条目“System.Int32”,用于“WMS_Web.Controllers.FileMaintenance.ViewPrincipalController”中的方法“System.Web.Mvc.ActionResult EditRecord(Int32)”。可选参数必须是引用类型、可为null的类型或声明为可选参数。参数名称:参数在抛出错误的代码的哪个部分,可以显示
EditRecord
方法定义吗?听起来您有
id
参数用于
EditRecord
函数,但您传递的是不同的参数名称。