WebPart 中DropDownList 丢失状态 的解决方案

最近比较忙,忙的都没时间更新博客了.

所以今天要一口气写两篇.

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;
                        }
                    }
         }
  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着SharePoint Conference 2009在Las Vegas的开幕,神秘的SharePoint Server 2010的真实面目也终于揭晓。新的SharePoint究竟都带来了哪些新功能,如果升级又要考虑什么呢?这一系列博客将为您详细解说这些要点。 新的服务架构和服务应用 SharePoint 2010引人注目的一点是服务架构的整体改变。以前的共享服务Shared Service Provider不复存在,取而代之的是独立的Shared Service Application。不同服务之间既可以互相依存,也可以独立存在,用户应用可以根据需求选择调用哪些服务,从而最大限度节省系统资源和带宽,同时独立互相之间的进程。这种做法提高了安全性和扩展性,使得单一站点多服务应用成为可能,而跨服务器场服务调用也可以实现。 同时,SharePoint 2010 也引入了一系列新服务应用,举例如下: Access Service 用户可以使用Access设计好自己的应用,直接发布到SharePoint 2010上展现并使用。而Access自身也更加易用,快速应用开发并发布易如反掌。 Visio Service 用Visio设计工作流,并直接导入SharePoint控制公文流转?在2007上这只能通过一些合作伙伴的解决方案实现,现在这是2010的自带功能! User Code Service SharePoint默认的功能不满意,想上传自己的代码或者别人提供的Webpart但管理员死活不同意?User Code Service可以帮你的忙。这是一个类似于沙盒的功能,在开发阶段我们的确称它为Sandboxed Solution,它将用户上传的解决方案放在沙盒执行,保证服务器场的安全性,同时管理员可以控制这些代码占用资源的多少以免出现问题。 Web Analytic Service 顾名思义,Web分析服务。通过分析用户的各种访问行为,管理员可以轻松了解到服务器的访问状况,内容分布等。 PerformancePoint Service PerformancePoint Server在2010里被纳入了SharePoint,成为其服务组件的一部分。更强大的商务智能展现报表服务,更华丽的图形,是这一版本PPS的侧重点。毕竟吸引眼球、洞察问题是商务智能最重要的用途。 Office Web Application 严格的说这是一组服务,包括Excel Service, Word Service, PowerPoint Service(非具体名称)。通过这些服务,通过网页方式查看编辑Office文档成为可能。这种页面编辑方式兼容性良好。 这些服务各自也有其他用途,比如说Excel Service的实时计算并生成图表供其他应用调用,PowerPoint Service的通过Silverlight在搜索结果展现PPT预览图,都给用户带来很不一样的体验。 Managed Metadata Service 受控元数据服务在SharePoint 2010无所不在,他是标签和分类的基础。通过心统一管理元数据分类和词汇表,SharePoint上的文档管理可以使得企业数据的分类更有序,知识重复利用率得到提高,检索效率也得到提升。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值