2015-02-10 2 views
0

Работая над DNN 7, у меня есть сетка, в которой отображается информация о пользователях. Я хотел бы установить «действие редактирования», чтобы отредактировать пользователя, например, в панель администратора.DNN 7 Откройте страницу/модуль в модуле

Итак, я решил сделать modale на той же странице.

<rad:GridTemplateColumn HeaderStyle-Width="0" ItemStyle-HorizontalAlign="Center" AllowFiltering="False"> 
    <ItemTemplate> 
     <a href="#" data-id="<%#((CustomerViewModel)Container.DataItem).UserID%>" class="e"> 
      <img src='<%=ResolveUrl("~/Icons/Sigma/Edit_16x16_Standard.png")%>' title='Edit user' /> 
     </a> 
    </ItemTemplate> 
</rad:GridTemplateColumn> 

// edit user infos 
$('.e').click(function() { 
    var url = "<%= GetEditUrlUser() %>".replace(new RegExp("KEYFIELD", "g"), $(this).attr("data-id")); 
    //alert(url); 
    dnnModal.show(url, true, 550, 950, false, ''); 
    return false; 
}); 

А вот моя функция CS

public string GetEditUrlUser() 
    { 
     // I need to show "dnndev.me/en-us/Admin/User-Accounts/ctl/Edit/mid/"+ModuleId+"/UserId/KEYFIELD/filter/All/pagesize/10/currentpage/0?popUp=true "; 
     var url = Globals.NavigateURL("393", "Edit", "mid=" + ModuleId, "UserID=KEYFIELD", "filter/All/pagesize/10/currentpage/0", "popUp=true"); 
     return url; 
    } 

Но это не хорошо, так как Globals.NavigateURL() возвращают мне страницу, где я.

Я также посмотрел на функцию ResolveUrl(), но не смог ничего сделать.

Итак, если кто-то может мне помочь или дать мне пример/советы, было бы здорово.

Thanx

EDIT: Это работает с этим кодом, но это не кажется, оптимизирован и очень большой

public string GetEditUrlUser() 
    { 
     var url = Globals.NavigateURL("Edit", "mid","393","UserID","KEYFIELD", "filter/All/pagesize/10/currentpage/0", "popUp=true"); 
     return url; 
    } 

EDIT 2: Для того, чтобы сделать его более эффективным, я это на самом деле. Но это не работает, я получил пустую версию.

Но этот способ выглядеть действительно лучше, так как он будет искать себя для модуля администратора

public string GetEditUrlUser() 
    { 
     // dnndev.me/en-us/Admin/User-Accounts/ctl/Edit/mid/"+ModuleId+"/UserId/KEYFIELD/filter/All/pagesize/10/currentpage/0?popUp=true 

     var moduleController = new ModuleController(); 
     var adminUserModule = moduleController.GetModuleByDefinition(PortalId, "User Accounts"); 
     var url = EditUrl(adminUserModule.TabID, "Edit", false, "mid="+adminUserModule.ModuleID, "userId=KEYFIELD"); 
     return url; 
    } 

ответ

0

Ладно, я думаю, что, наконец, я получил его.

Код ASCX будет

<rad:GridTemplateColumn HeaderStyle-Width="0" ItemStyle-HorizontalAlign="Center" AllowFiltering="False"> 
    <ItemTemplate> 
     <a href="#" data-id="<%#((CustomerViewModel)Container.DataItem).UserID%>" class="e"> 
      <img src='<%=ResolveUrl("~/Icons/Sigma/Edit_16x16_Standard.png")%>' title='Edit user' /> 
     </a> 
    </ItemTemplate> 
</rad:GridTemplateColumn> 

С Somes Javascript Функция для самостоятельного обновления без перезагрузки страницы.

function refreshGrid() { 
    // grdCustomers should be the ID of your grid 
    $find("<%= grdCustomers.ClientID %>").get_masterTableView().rebind(); 
} 

// edit user infos 
$('.e').click(function() { 
    var url = "<%= GetEditUrlUser() %>".replace(new RegExp("KEYFIELD", "g"), $(this).attr("data-id")); 
    dnnModal.show(url,/*showReturn*/true, 550, 950, true, 'javascript:parent.window.refreshGrid()'); 
    return false; 
}); 

И в файл CS это должно быть.

public string GetEditUrlUser() 
{ 
    var moduleController = new ModuleController(); 
    var adminUserModule = moduleController.GetModuleByDefinition(PortalId, "User Accounts"); 
     var url = Globals.NavigateURL(adminUserModule.TabID, "Edit", "mid=" + adminUserModule.ModuleID, "userId=KEYFIELD", "popUp=true"); 
    return url; 
} 

И он отлично работает.

Надеюсь, это может помочь кому-то.

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