小弟最近在做一个页面,其中有这样一个要求
在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);
}
}
在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);
}
}
2,是否DIV RUNAT=SERVER
3,是否有包到控件里,那样的话 CLIENTID可是会改变的哦