[英]How to create WizardFormPage dynamically in Sitecore?
我們正在使用 WizardForm xml 控件來實現某種后端 sitecore 向導。 我們希望動態地將控件添加到頁面(甚至創建新的自定義頁面),這取決於在上一頁中所做的選擇。
我已經完成的工作:我們在頁面上調用了頁面控件的父控件(在 ActivePageChanging 事件中)並嘗試在其中添加類型為“WizardDialogBaseXmlControl”的新 object。 但是前端沒有顯示新頁面。 我仍然在瀏覽器的開發者中看到相同數量的頁面。 我在 xml 中設計時添加的工具。我嘗試了“SheerResponse.Redraw()”,但這也沒有幫助。
我的下一次嘗試是在設計時在 xml 文件中創建一些頁面,並用控件填充它們,但是在向導加載后這不起作用。 像“ControlName.Controls.Add(new ControlName())”之類的東西只有在被覆蓋的方法“OnLoad()”中調用時才有效。
此代碼不起作用:
protected override bool ActivePageChanging(string page, ref string newpage)
{
if (newpage.Equals(Consts.PrototypeDetailsPageId))
{
if (IsFormItemSelected(out var formItem))
{
PrototypeDetailsPanel0.Controls.Add(new Literal("some text"));
}
else
{
SheerResponse.Alert("You must select a form item");
return false;
}
}
return base.ActivePageChanging(page, ref newpage);
}
當頁面和控件依賴於同一向導之前頁面的更改時,我如何創建一個工作向導來在運行時添加頁面和控件?
Sitecore WizardForm
依靠newpage
參數來處理步驟之間的導航。 因此,您可以提前准備替代版本的向導步驟,並根據在上newpage
中輸入的值將其中一個設置為新頁面。 例如,您的代碼如下所示:
protected override bool ActivePageChanging(string page, ref string newpage)
{
if (newpage.Equals(Consts.PrototypeDetailsPageId))
{
if (IsFormItemSelected(out var formItem))
{
newpage = "WizardPageWithAdditionalFields";
}
else
{
SheerResponse.Alert("You must select a form item");
return false;
}
}
return base.ActivePageChanging(page, ref newpage);
}
我還發現可以使用 PowerShell 擴展中的交互式對話框輕松創建向導 forms 很有用。 作為替代解決方案,下面是一個示例,說明如何顯示多個對話框以通過多個步驟為用戶導航:
--Prepare step 1
$options = @{
"A"="a"
"B"="b"
}
$props = @{
Parameters = @(
@{Name="selectedOption"; Title="Choose an option"; Options=$options}
)
Title = "Step 1"
}
--Display step 1
$result = Read-Variable @props
if($result -ne "ok") { exit }
--Step 2
if($selectedOption -eq "Expected value") {
--Perform additional logic, for example modify @props to include additional steps
$props = @{
...
}
}
--Display step 2
$result = Read-Variable @props
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.