2013-09-03 6 views
0

데이터베이스 가용성 확인과 같은 작업을 수행하는 동안 UI 컨트롤을 비활성화하는 방법이 있습니까? CheckDBConnection가 실행되면런타임에 컨트롤을 비활성화 할 수 있습니까?

<Control Id="Next" Type="PushButton"> 
    <Publish Event="DoAction" Value="CheckDBConnection" Order="3"> 
     <![CDATA[SQL_SERVER <> "" AND SQL_USER <> "" AND SQL_PASSWORD <> ""]]> 
    </Publish> 
    <Publish Event="DoAction" Value="Confirm_OverwriteDatabase" Order="2"/> 
    <Publish Event="NewDialog" Value="VerifyReadyDlg" Order="1"/> 
</Control> 

은, 모든 컨트롤은 살아있다,하지만 아무것도하지 않습니다 지금은 이런 식입니다. 백그라운드 조치를 수행하는 동안 이들을 사용 불가능하게하는 것이 더 정확합니다.

답변

0

사용 조건 \ 비활성화 원하는 속성을 기반으로 활동 활성화와 함께 : @ 비탈리 - zadorozhnyy에

<Control Id="{Id}" Type="{Type}"> 
    <Condition Action="enable" ><![CDATA[SOMEPROPERTY = SomeValue]]></Condition> 
    <Condition Action="disable"><![CDATA[SOMEPROPERTY <> SomeValue]]></Condition> 
</Control> 
+0

는 컨트롤이 상태를 변경하지 않습니다. 대화 상자 또는 무언가를 새로 고침해야합니다 – phantasm

+0

여기를보십시오 : http://stackoverflow.com/questions/4241863/wix-interactions-with-conditions-properties-custom-actions –

+0

나는 쌍둥이 대화 상자를 이미 시험해 보았습니다. 도움을 - 두 번째 대화 상자로 전환하면이 컨트롤에 대한 이벤트 대기열이 재설정되므로'VerifyReadyDlg'에 연결할 수 없습니다. – phantasm

0

감사합니다, 나는하지 말자 여분의 이상한 코드를 가지고 올 수 있었다 자신을 이해 . 그러나 그것은 효과적이다.

... 
... 

<Property Id="DBCHECK_INPROGRESS" Value="0" /> 
<Property Id="DBCHECK_NOTINPROGRESS" Value="0" /> 

... 
... 

<Control Id="{Id}" Type="{Type}"> 
    <Condition Action="enable"><![CDATA[DBCHECK_INPROGRESS <> 1]]></Condition> 
    <Condition Action="disable"><![CDATA[DBCHECK_INPROGRESS = 1]]></Condition> 
</Control> 

{insert those conditions for any control you want to disable during action} 

... 
... 


<Control Id="Next" Type="PushButton"> 
    <Condition Action="enable"><![CDATA[DBCHECK_INPROGRESS <> 1]]></Condition> 
    <Condition Action="disable"><![CDATA[DBCHECK_INPROGRESS = 1]]></Condition> 

    <Publish Event="DoAction" Value="SetInProgress">1</Publish> 
    <Publish Property="TEMP_INPROGRESS" Value="[DBCHECK_INPROGRESS]">1</Publish> 
    <Publish Property="DBCHECK_INPROGRESS" Value="[TEMP_INPROGRESS]" /> 

    <Publish Event="DoAction" Value="CheckDBConnection"/> 

    <Publish Event="DoAction" Value="SetNotInProgress">1</Publish> 
    <Publish Property="TEMP_NOTINPROGRESS" Value="[DBCHECK_NOTINPROGRESS]">1</Publish> 
    <Publish Property="DBCHECK_NOTINPROGRESS" Value="[TEMP_NOTINPROGRESS]" /> 

    {other events} 

</Control> 

및 사용자 정의 행동 (JScript에서는) 간단하다 : 나는 속성을 변경할 때

function SetInProgress_CA() { 
    Session.Property("DBCHECK_INPROGRESS") = "1"; 
} 
function SetNotInProgress_CA() { 
    Session.Property("DBCHECK_INPROGRESS") = "0"; 
} 
관련 문제