2017-01-30 2 views
-1

В настоящее время у меня есть GridView, и я пытаюсь добавить кнопку. Я могу добавить его, но когда я нажимаю на него, я получаю эту странную ошибку в этой строке.ASP.net Добавление новой кнопки в GridView дает ошибку в jquery.dataTables.min.js

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

Ошибка:

Unhandled exception at line 91, column 426 in http://localhost:23549/Scripts/jquery.dataTables.min.js

0x800a138f - Microsoft JScript runtime error: 'mData' is null or not an object

Я сделал несколько исследований, и я не могу найти этот вопрос где-нибудь еще. Другие пользователи получают ту же ошибку, но ни один из них не использует 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 
      } 

     } 

Если удалить кнопку все работает отлично. (Работа LinkButton)

Я попытался изменить тип события на RowEditing и RowUpdating. Такая же ошибка.

Где я могу начать отладку, чтобы узнать, откуда исходит ошибка? Не стесняйтесь задавать любые вопросы.

+0

Я запустил ваш код так, как вы размещен здесь, я не получил ошибки даже после нажатия кнопки, я предполагаю, что может быть и другая вещь, которая создает проблему на вашей стороне, а не эту часть кода. –

ответ

1

Ошибка в достаточно проста, просто сообщив, что вы знаете, что jquery.dataTables ищет объект с именем mData, который в настоящее время является недействительным и/или ложным.

Попробуйте ввести <div class="datatable"> ID, чтобы найти то, что искали.

То есть, <div class="datatable" id="mData"> Я не уверен на 100%, что это сделает, но ваше решение будет определенно по соседству.

Я часто использовал dataTables и имел тенденцию сталкиваться с множеством неприятных ошибок, подобных этому, которые только что взяли отладку и ударили головой по столу, прежде чем я понял это.

Кажется, что в противном случае (не могу сказать, что без отладки) ваш код будет в порядке - вам просто нужно явно указать dataTables, что такое mData. Если это не на <div>, может быть, кнопка или GridView: честно, слишком много переменных для меня, чтобы точно знать (если вы не попробуете некоторые из них и не получите обратную связь!)

+0

Я предполагаю, что он должен быть установлен на кнопку, потому что все работает, если я удалю кнопку. – phil652

+0

Вы неправильно поняли, что я имел в виду ... Итак, ошибка говорит вам, что свойство 'mData' равно null - это означает, что он не подбирает все строки, которые вы выбираете, или что бы вы ни пытались получить кнопку для выполнения данных. Когда вы говорите, что это работает, если вы удалите кнопку: вы можете заставить ее делать то, что вы пытаетесь сделать, чтобы кнопка делала без кнопки? –

+0

LinkButton работает, и я не устанавливал mData ни для чего. Вот почему я запутался – phil652

Смежные вопросы