Search code examples
c#asp.netwebformswebusercontrol

How to set enabled state of button via property


I am having a user control full of buttons what I want to be able to do is tell each button in turn if its disabled or not so I was using a public enumProperty to allow me to dertmin which button.

public enum iandENUM
    {
        Personal =0,
        Property = 1,
        iande = 2,
        Vechiles = 3
    }

public iandENUM actvieButton { get; set; }



<telerik:RadButton ID="rbPersonalDetails" runat="server" CssClass="btn btn-info" Text="Property Details">

                <ContentTemplate>
                    <i class="fa fa-user" style="color: #5bc0de;"></i>Personal Details
                </ContentTemplate>

            </telerik:RadButton>
            <telerik:RadButton ID="rbPropertyDetails" runat="server" CssClass="btn btn-info" Text="Property Details" DisabledButtonCssClass="btn btn-default">

                <ContentTemplate>
                    <i class="fa fa-home" style="color: #5bc0de;"></i>Property Details
                </ContentTemplate>

            </telerik:RadButton>
            <telerik:RadButton ID="rbVechicleDetails" runat="server" CssClass="btn btn-info"   DisabledButtonCssClass="btn btn-default" btn-defaultText="Vechicle Details">

                <ContentTemplate>
                    <i class="fa fa-car" style="color: #5bc0de;"></i>Vechicle Details
                </ContentTemplate>

            </telerik:RadButton>

            <telerik:RadButton ID="rbincomee"  runat="server" CssClass="btn btn-info" DisabledButtonCssClass="btn btn-default">

                <ContentTemplate>
                    <i class="fa fa-gbp" style="color: #5bc0de;"></i>Income & Expenditures 
                </ContentTemplate>

            </telerik:RadButton>



            <telerik:RadButton ID="rbPensions" runat="server" CssClass="btn btn-info"  DisabledButtonCssClass="btn btn-default">

                <ContentTemplate>
                    <i class="fa fa-bank" style="color: #5bc0de;"></i>Pensions
                </ContentTemplate>

            </telerik:RadButton>

            <telerik:RadButton ID="rbMeetings" runat="server" CssClass="btn btn-info"  DisabledButtonCssClass="btn btn-default">

                <ContentTemplate>
                    <i class="fa fa-calendar" style="color: #5bc0de;"></i>Meetings
                </ContentTemplate>

            </telerik:RadButton>

            <telerik:RadButton ID="rbOtherAssets" runat="server" CssClass="btn btn-info" DisabledButtonCssClass="btn btn-default">

                <ContentTemplate>
                    <i class="fa fa-share" style="color: #5bc0de;"></i>Other Assets
                </ContentTemplate>

            </telerik:RadButton>

This is the class code behind my main question is how would i give a property value so that i can set the active button based on the iandeEnum

  protected void Page_Load(object sender, EventArgs e)
    {
        if(actvieButton==casesToolbar.iandENUM.Personal)
        {




        }
    }

    private bool _enabledState;
    public bool EnabledState
    {
        get { return _enabledState; }
        set {

            rbMeetings.Enabled = _enabledState;
            rbOtherAssets.Enabled = _enabledState;
            rbPensions.Enabled = _enabledState;
            rbPropertyDetails.Enabled = _enabledState;
            rbVechicleDetails.Enabled = _enabledState;
            rbincomee.Enabled = _enabledState;
             }
    }

    public enum iandENUM
    {
        Personal =0,
        Property = 1,
        iande = 2,
        Vechiles = 3
    }

    public iandENUM actvieButton { get; set; }
    public void disableSectionsTillSave(Boolean isEnabled)
    {

        try
        {
            rbMeetings.Enabled = isEnabled;
            rbOtherAssets.Enabled = isEnabled;
            rbPensions.Enabled = isEnabled;
            rbPropertyDetails.Enabled = isEnabled;
            rbVechicleDetails.Enabled = isEnabled;
            rbincomee.Enabled = isEnabled;
        }
        catch (Exception ex)

        {
            string inner = string.Empty;
            if (ex.InnerException != null)
            {
                inner = ex.InnerException.ToString();
            }
            logger.Error("Error in disableSectionsTillSave function edit modules cases " + ex.ToString() + " " + inner);

        }


    }

Solution

  • You can enable the appropriate button(s) when the value of the ActiveButton property is modified:

    public enum MyEnum
    {
        Val1,
        Val2,
        Val3
    }
    
    private MyEnum m_ActiveButton = MyEnum.Val1;
    
    public MyEnum ActiveButton
    {
        get
        {
            return m_ActiveButton;
        }
    
        set
        {
            m_ActiveButton= value;
    
            btn1.Enabled = false;
            btn2.Enabled = false;
            btn3.Enabled = false;
    
            switch (value)
            {
                case MyEnum.Val1:
                {
                    btn1.Enabled = true;
                    break;
                }
    
                case MyEnum.Val2:
                {
                    btn2.Enabled = true;
                    break;
                }
    
                case MyEnum.Val3:
                {
                    btn3.Enabled = true;
                    break;
                }
            }
        }
    }
    

    The property can also be used in the markup, to set the initial state:

    <userCtl:WebCtl1 runat="server" ActiveButton="Val3" />