大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
最近比较忙,忙的都没时间更新博客了.
所以今天要一口气写两篇.
WebPart 中DropDownList 丢失状态 的解决方案,十分头痛.
现象就是DropDownList老是为空.
当时有些晕,上网搜了好久,要么没答案,要么含糊其词。
当有些网友说用HiddenField 保存状态给我一些启发,于是我朝HiddenField的方向去想。
原理:HiddenField的是可以直接反映到客户端的且状态值不丢失,用HiddenField的值记录DropDownList的ClientID.
而DropDownList在客户端反映为ID为ClientID的Select域的Form成员。然后当提交时在服务器端获得ID为ClientID的Select域的Form成员
的值即为DropDownList的选中值。
1、用HiddenField的值记录DropDownList的ClientID
private DropDownList DlistMember = new DropDownList();
private TextBox txtCNName = new TextBox();
private Button btnOnboard = new Button();
private Label lblMessage = new Label();
private HiddenField hiddenFiled = new HiddenField();
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
//填充 DlistMember 的数据
DlistMember.RenderControl(writer)
btnOnboard.Click += new EventHandler(btnOnboard_Click);
txtCNName.RenderControl(writer);
txtCNName.AutoPostBack = false;
btnOnboard.RenderControl(writer);
lblMessage.RenderControl(writer);
hiddenFiled.Value = DlistMember.ClientID;
hiddenFiled.RenderControl(writer);
}
protected override void CreateChildControls()//为了加上btnOnboard的Click事件
{
btnOnboard.Click += new System.EventHandler(this.btnOnboard_Click);
DlistMember.EnableViewState = true;
//DlistMember.EnableTheming = true;
//DlistMember.AutoPostBack = true;
this.Controls.Add(DlistMember);
this.Controls.Add(btnOnboard);
this.Controls.Add(hiddenFiled);
}
2、事件处理
protected void btnOnboard_Click(object sender, EventArgs e)// process btnOnboard click
{
string strValue=””;
strValue = hiddenFiled.Value.ToString().Replace(“$”,”_”);
for (int i = 0; i < this.Page.Request.Form.Count; i++)//因为$和_的混淆,这里用遍历Form的域来找到需要的域
{
string strTemp = this.Page.Request.Form.Keys[i].ToString().Replace(“$”, “_”);
if (strTemp == strValue)
{
strValue = this.Page.Request.Form[i].ToString();
isFindFrom = true;
break;
}
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/183967.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...