2016-09-21 3 views
0

Мне нужно перезагрузить GridView на событие click tab. Я написал следующий код:Сбой приложений после добавления нового контента в html

<script> 
    function OnTabClickEvent(s, e) { 
     var tableUrl; 

     switch (e.tab.Index) { 
      case 0: 
       tableUrl = '@Url.Action("CGridViewPartial", "Competences")'; 
       break; 
      default: 
       tableUrl = '@Url.Action("TGridViewPartial", "Technologies")'; 
     } 

     $('#TabContent').empty(); 
     $('#TabContent').load(tableUrl); 
    } 
</script> 

<div> 
    @Html.DevExpress().TabControl(settings => 
    { 
     settings.Name = "CatalogTabControl"; 
     settings.Width = Unit.Percentage(100); 

     settings.Tabs.Add(tab => 
     { 
      tab.Name = "TabCompetences"; 
      tab.Text = Headers.Competences; 
     }); 
     settings.Tabs.Add(tab => 
     { 
      tab.Name = "TabProjects"; 
      tab.Text = Headers.ProjectsActivities; 
     }); 
     settings.Tabs.Add(tab => 
     { 
      tab.Name = "TabTechnologies"; 
      tab.Text = Headers.Technologies; 
     }); 

     //Events 
     settings.ClientSideEvents.TabClick = "OnTabClickEvent"; 
    }).GetHtml() 
</div> 
<div id="TabContent"> 
    @Html.Action("CGridViewPartial", "Competences") 
</div> 

Это работает, но только один раз ... На втором нажмите он падает с ошибками:

Uncaught TypeError: Cannot read property 'FindEventSourceParentByTestFunc' of undefined Page:74 Uncaught TypeError: ASPx.TCTClick is not a function

Что я делаю неправильно? Я действительно не могу понять, почему он не работает на второй и следующей вкладках.

+1

является ли это Java-ошибка или ошибка .NET? Похож на javascript, но просто хотел быть уверенным. Если это так, вам, вероятно, придется опубликовать связанный код javascript. Ваш браузер должен иметь возможность указать строку, в которой происходит ошибка. – ADyson

+0

Это ошибка в JavaScript, которая содержится в сценариях по умолчанию. И это интересно, эта ошибка появляется только в том случае, если я добавляю новый контент на страницу, а не удаляю. –

+0

"скрипты по умолчанию". Какие именно сценарии? В браузере нет сценариев по умолчанию, только те, которые были добавлены вами или с помощью среды MVC. Это поможет узнать местоположение ошибки. – ADyson

ответ

0

Попробуйте это:

<script> 
    function OnTabClickEvent(s, e) { 
     var tableUrl; 

     switch (e.tab.Index) { 
      case 0: 
       tableUrl = CGridView.PerformCallback(); // where CGridView is the name of the grid view 
       break; 
      default: 
       tableUrl = TGridView.PerformCallback(); // where TGridView is the name of the grid view 
     } 

    } 
</script> 

Подробнее о обратных вызовов здесь: https://documentation.devexpress.com/#AspNet/CustomDocument9052