2012-04-12 4 views
2

Я ищу альтернативные способы решения проблемы. Мы используем для просмотра файлов, и мы хотим разрешить пользователю изменять права доступа к элементу файла через контекстное меню правой кнопки мыши («Изменить разрешения»). Решение, к которому я придумал, заключается в загрузке пользовательского элемента управления ASP.NET на стороне сервера в модальном диалоговом окне jQuery. Этот пользовательский элемент управления будет содержать логику, необходимую для добавления/удаления доступа пользователя к выбранному элементу.jQuery UI Dialog + пользовательский контроль ASP.NET

скрипт JQuery Диалог выглядит следующим образом (немного изменен для удобства чтения), где DisplayItemAccessConfig() является метод, который вызывается из контекстного меню:

<!-- access control script --> 
<script type="text/javascript" charset="utf-8"> 

    function DisplayItemAccessConfig() { 
     $.getJSON('AccessRights.ashx', function (data) { 

      var itemName = data["itemName"]; 

      /* set new title (JUST FOR TESTING) */ 
      $(dialog).dialog('option', 'title', itemName); 

      /* open modal dialog --> */ 
      $(dialog).dialog('open'); 

     }); 

    } 

    $(function() { 
     $("#dialog").dialog({ 
      autoOpen: false, 
      modal: true, 
      buttons: { 
       "Ok": function() { $(this).dialog("close"); }, 
       "Cancel": function() { $(this).dialog("close"); } 
      }, 
      open: function (type, data) { 
       $(this).parent().appendTo("form"); 
      } 
     }); 
    });  
</script> 

Задача 1: найти способ, чтобы перезагрузить пользовательский элемент управления каждый раз, когда отображается всплывающее окно jQuery - это для получения текущих настроек доступа для выбранного элемента. Теперь он загружается, когда страница сначала загружается, поскольку это просто элемент div, содержащий панель обновления с заполнителем для моего пользовательского контроля и видимость, установленную на none. У кого-нибудь есть подсказки?

Задача 2: Пока я пытаюсь понять, что один из них, я думал, что стоит подумать о других мнениях. Есть ли лучший способ решить это? Должен ли я использовать чистый jQuery с HTML и использовать методы .ashx на стороне сервера для извлечения данных вместо пользовательского контроля ASP.NET?

ответ

1
  1. Вы можете сделать это, создавая скрытую кнопку внутри uploadpanel, а затем вызвать его так:

    __doPostBack ('<% = Button.ClientID%>', '');

  2. Лично я бы бросил UpdatePanel и перешел на вызовы JQuery AJAX для обновления содержимого диалогового окна, но это зависит от сложности вашего пользовательского элемента управления. Трудно сказать, не видя больше вашего кода.

+0

Согласен, комбинация jQuery AJAX и Knockoutjs должна предоставить мне всю необходимую мне функциональность без панелей обновлений и частичных обратных передач. – Andreas