ASP.net向GridView添加新Button会在jquery.dataTables.min.js中出错

时间:2017-01-30 18:19:35

标签: c# jquery asp.net visual-studio gridview

我目前有一个GridView,我正在尝试添加一个按钮。我能够添加它,但是当我点击它时,我在这一行上得到了这个奇怪的错误。

if(c.mData===a){var d=u(b,"sort")||u(b,"order"),e=u(b,"filter")||u(b,"search");

错误:

  

第91行第426行未处理的异常   http://localhost:23549/Scripts/jquery.dataTables.min.js

     

0x800a138f - Microsoft JScript运行时错误:'mData'为空或不为空   一个对象

我做了一些研究,在其他任何地方都找不到这个问题。其他用户得到相同的错误,但没有一个使用ASP。我尝试更改按钮上的一些属性。我也尝试添加它有一个ButtonField,但我仍然得到相同的错误。

<div class="datatable">
    <asp:GridView runat="server" ID="jobGridView" AutoGenerateColumns="False" BorderWidth="0px" GridLines="None" CssClass="table table-hover table-condensed font13" OnRowDataBound="jobGridView_RowDataBound" DataKeyNames="site_id,id" OnRowCommand="OnOff">
        <Columns>
            <asp:BoundField DataField="site_id" meta:resourcekey="siteField" />
            <asp:BoundField DataField="id" meta:resourcekey="jobNameField" />
            <asp:BoundField DataField="job_start_date" meta:resourcekey="jobStartField" DataFormatString="{0:yyyy-MM-dd HH:mm:ss}" />
            <asp:BoundField DataField="job_end_date" meta:resourcekey="jobEndField" DataFormatString="{0:yyyy-MM-dd HH:mm:ss}" />
            <asp:BoundField DataField="job_duration" meta:resourcekey="jobDurationField" DataFormatString="{0:HH:mm:ss.fff}" />
            <asp:BoundField DataField="job_last_run_elapsed_time" meta:resourcekey="jobElapsedTimeField" />
            <asp:BoundField DataField="return_code" meta:resourcekey="returnCodeField" />
            <asp:BoundField DataField="return_description" meta:resourcekey="returnDescriptionField" />
            <asp:BoundField DataField="status_code" meta:resourcekey="statusField" />
            <asp:BoundField DataField="job_last_failure" meta:resourcekey="jobLastFailureField" DataFormatString="{0:yyyy-MM-dd HH:mm:ss}" />
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:LinkButton ID="lnkSelect" runat="server" Text="View" OnClientClick='<%# GetOpenTabJavascript(DataBinder.Eval(Container.DataItem, "id"), DataBinder.Eval(Container.DataItem, "site_id"))%>' />
                </ItemTemplate>
            </asp:TemplateField>
             <asp:TemplateField>
                <ItemTemplate>
                    <asp:Button ID="Button1" runat="server" CommandName="OnOff" Text="Turn On/Off" ShowHeader="True" CommandArgument='<%# Eval("id") %>' />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
</div>
 protected void OnOff(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "OnOff")
            {
               //This part gets hit when debugging, error is after
            }

        }

如果我删除按钮一切正常。 (LinkBut​​ton工作)

我尝试将事件类型更改为RowEditing和RowUpdating。同样的错误。

我应该从哪里开始调试以找出错误的来源? 随意提出任何问题。

1 个答案:

答案 0 :(得分:1)

错误非常简单,只是让你知道jquery.dataTables正在寻找一个名为mData的对象,该对象当前为空和/或为假。

尝试为您的<div class="datatable">提供一个ID,以匹配dataTables正在寻找的内容。

也就是说,<div class="datatable" id="mData">我并非100%肯定会这样做,但你的解决方案肯定会在附近。

我经常使用dataTables并且经常会遇到很多令人烦恼的错误,这些错误只是在我弄清楚之前就调试并在桌面上敲了一下。

似乎不是这样(在没有调试的情况下真的可以告诉你)你的代码没问题 - 你只需要明确告诉dataTables mData是什么。如果它不在<div>上,可能是按钮或GridView:说实话,我知道的变量太多了(除非您尝试其中一些并得到反馈!:))