DNN 7 在模态中打开一个 page/module
DNN 7 Open a page/module in a modale
在 DNN 7 上工作,我有一个显示一些用户信息的网格。
我想设置一个 "edit action" 来编辑用户,比如进入管理面板。
所以我选择在同一个页面做一个模态
<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() return 我所在的页面。
我也看过ResolveUrl()
函数,但是没成功。
所以如果有人能帮助我,或者给我一个例子/提示,那就太好了。
谢谢
编辑:它与这段代码一起工作,但它似乎没有经过优化而且真的很棒
public string GetEditUrlUser()
{
var url = Globals.NavigateURL("Edit", "mid","393","UserID","KEYFIELD", "filter/All/pagesize/10/currentpage/0", "popUp=true");
return url;
}
编辑 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;
}
好吧,我想,我终于明白了。
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>
具有一些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;
}
而且效果很好。
希望对大家有所帮助。
在 DNN 7 上工作,我有一个显示一些用户信息的网格。 我想设置一个 "edit action" 来编辑用户,比如进入管理面板。
所以我选择在同一个页面做一个模态
<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() return 我所在的页面。
我也看过ResolveUrl()
函数,但是没成功。
所以如果有人能帮助我,或者给我一个例子/提示,那就太好了。
谢谢
编辑:它与这段代码一起工作,但它似乎没有经过优化而且真的很棒
public string GetEditUrlUser()
{
var url = Globals.NavigateURL("Edit", "mid","393","UserID","KEYFIELD", "filter/All/pagesize/10/currentpage/0", "popUp=true");
return url;
}
编辑 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;
}
好吧,我想,我终于明白了。
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>
具有一些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;
}
而且效果很好。
希望对大家有所帮助。