C#ext从后面的代码更改按钮的图标

问题描述 投票:0回答:1

我有这个按钮:

<ext:Button Flat="true" runat="server" ID="btnCheckV" Icon="CheckError" Scale="Large" ToolTip="Is Valid" >
        <DirectEvents>
            <Click OnEvent="CheckValidity" />
        </DirectEvents>
</ext:Button>

我想在后面的代码中更改按钮的图标(勾选有效,交叉无效)。所以我这样做:

protected void CheckValidity(object sender, DirectEventArgs e)
    {
         //....validation check code
         if (isValid == true)
        {
            btnCheckV.Icon = Icon.Tick;
            e.Success = true;
        }
        else
        {
            btnCheckV.Icon = Icon.Cross;
            e.Success = false;
        }
    }

它工作,但只是我第一次检查。例如,如果我第一次检查有效则转为勾选,但如果我再次检查并且数据无效,则不会更改为交叉

c# button extjs ext.net
1个回答
0
投票

问题在于这一行:

e.Success = false;

如果在Direct Event中将Success字段设置为true,那么您的响应如下所示:

{script:"btnCheckV.setIconCls(\"#Tick\");"}

当您将其设置为false时,它看起来像这样:

{success:false}

如您所见,只发送直接事件的状态 - 按钮中的图标没有任何内容。

将您的代码更改为:

protected void CheckValidity(object sender, DirectEventArgs e)
{
    //....validation check code

    if (isValid == true)
        btnCheckV.Icon = Icon.Tick;
    else
        btnCheckV.Icon = Icon.Cross;

    e.Success = true;
}

它会毫无问题地工作。

© www.soinside.com 2019 - 2024. All rights reserved.