小弟最近在做一个页面,其中有这样一个要求
在FormView中有一个RadioButtionList,有3个Radio,用来控制3个DIV的显示状态。当FormView是初始状态即Mode = Insert时,我在RadioButtonList的SelectedIndexChange中已经正确实现了该段代码,页面的确能够根据我选择的Radio显示对应的Div,隐藏其余的Div。但是,我在保存信息后,以EditMode进入该FormView时,想用代码来实现隐藏和显示指定div的功能时,却发现虽然代码都能走到,但是页面显示出来的时候没有效果,3个Div全都显示出来了,不知道为什么。其中RadioButtonList的事件代码如下
    protected void rdlType_SelectedIndexChanged(object sender, EventArgs e)
    {
        RadioButtonList rdl = (RadioButtonList)sender;
        if (rdl != null)
        {
            InitHideDiv();            SetDivByType(rdl.SelectedItem.Value);
        }
    }
页面的初始化代码如下,该方法在Page_Load的if(!IsPostBack)中执行
     private void SetPageInit()
    {
        InitHideDiv();        RadioButtonList rdl = fvRequest.FindControl("rdlType") as RadioButtonList;
        if (rdl != null)
        {
            SetDivByType(rdl.SelectedItem.Value);
        }
        else
        {
            HiddenField ht = fvRequest.FindControl("hidType") as HiddenField;
            if (ht != null)
            {
                SetDivByType(ht.Value);
            }
        }    }相关方法如下
/// <summary>
    /// 页面初始化时隐藏3种表单的Div,根据后面选择的类型来显示
    /// </summary>
    private void InitHideDiv()
    {
        SetDivVisible("divNewRegMain", false);
        SetDivVisible("divRegRenew", false);
        SetDivVisible("divRegExt", false);
    }
    /// <summary>
    /// 
    /// </summary>
    /// <param name="div"></param>
    /// <param name="visible"></param>
    private void SetDivVisible(string div, bool visible)
    {
        HtmlGenericControl hc = null;        hc = (fvRequest.FindControl(div) as HtmlGenericControl);
        if (hc != null)
        {
            string display = "display:none;";
            if (visible)
            {
                display = "display:block;";
            }
            else
            {
                display = "display:none;";
            }
            //hc.Visible没作用,用Style来显示和隐藏
            hc.Visible = visible;            //hc.Attributes.Remove("style");
            hc.Attributes.Add("style", display);
        }
    }
    /// <summary>
    /// 
    /// </summary>
    private void SetDivByType(string type)
    {
        string divName = string.Empty;
        switch (type)
        {
            case "0":
                divName = "divNewRegMain";
                break;
            case "1":
                divName = "divRegRenew";
                break;
            case "2":
                divName = "divRegExt";
                break;
            default:
                break;
        }        if (!string.IsNullOrEmpty(divName))
        {
            SetDivVisible(divName, true);
        }
    }