我正在寻找一种方法来刷新当前页面后的自定义动作。
我的代码
<Control Id="Config" Type="PushButton" .../>
<Publish Event="DoAction" Value="SetConfiguration"></Publish>
</Control>
可以在自定义动作后,但我没看到Session有这样的机会,或者只是在Control中添加一些Event就可以了。
编辑:我的想法是这样的
好吧,我有一些类似的想法,但如何在返回结果后创建NewDialog的自定义动作。
<Control Id="Config" Type="PushButton" X="120" Y="243" Width="56" Height="17" Default="yes" Text="Config" >
<Publish Event="DoAction" Value="SetConfiguration" Order="1"></Publish>
<Condition Action="disable">EndConfig = "true"</Condition>
<Condition Action="enable">EndConfig = "false"</Condition>
<Publish Event="NewDialog" Value="IISconfiguration2">EndConfig="true</Publish>
</Control>
但如何在返回结果后创建NewDialog的自定义动作?因为它现在做在这同一时间。设置1和2的顺序不工作。
试试这个
<Control Id="Config" Type="PushButton" X="120" Y="243" Width="56" Height="17" Default="yes" Text="Config" >
<Publish Event="DoAction" Value="SetConfiguration">1</Publish>
<Condition Action="disable">EndConfig = "true"</Condition>
<Condition Action="enable">EndConfig = "false"</Condition>
<Publish Event="NewDialog" Value="IISconfiguration2">2</Publish>
</Control>
这是MSI原生UI中的一个已知行为。
我有的最好的解决方法是克隆一个对话框,然后从原来的对话框过渡到克隆对话框(或者克隆到原来的对话框),这样对用户来说就像同一个对话框,但实际上它是一个不同的对话框,数据会被刷新。
举个例子。
在SQLDlg1上。
<Control Id="Test" Type="PushButton" Text="&Test" TabSkip="no" Default="yes" Height="17" Width="56" X="283" Y="195">
<Publish Event="NewDialog" Value="SQLDlg2">1</Publish>
<Publish Event="DoAction" Value="ValidateDatabase">1</Publish>
</Control>
在SQLDlg2上:
<Control Id="Test" Type="PushButton" Text="&Test" TabSkip="no" Default="yes" Height="17" Width="56" X="283" Y="195">
<Publish Event="NewDialog" Value="SQLDlg1">1</Publish>
<Publish Event="DoAction" Value="ValidateDatabase">1</Publish>
</Control>
在下一个对话框中,我也会清除属性,以防他们点击回来。
<Publish Dialog="VerifyReadyDlg" Control="Back" Property="DatabaseValid" Value="{}">1</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="SQLDlg">1</Publish>