• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#动态生成DropDownList执行失败原因分析

C#动态生成DropDownList执行失败原因分析

作者:小啊斌 字体:[增加 减小] 来源:互联网 时间:2017-05-28

小啊斌 通过本文主要向大家介绍了c#dropdownlist,c#获取dropdownlist,c#绑定dropdownlist,c#中dropdownlist,dropdownlist等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例分析了C#动态生成DropDownList执行失败原因。分享给大家供大家参考。具体如下:

今天研究DDL控件的动态生成的时候遇到了点问题 ,当我写代码的时候发现点击button后 只能创建一个DDL控件,再点击就没有作用了,后来我在里面设置了变量,看看这个事件是不是没有执行,发现变量并没有改变,刚刚有点疑惑不解,后来发现当我触发其它事件的时候,控件消失了!我想,button的click事件会回传,而回传后新建的控件就会消失,我才明白,原来每次都有创建新的控件,只是每次再次点击button的时候回传页面,导致之前产生的控件消失了,而那唯一的一个控件是这次生成的,我又查询了一下asp的生命周期 看来对于页面的生命周期理解的不清楚会出好多问题。

简单的说 页面的生命周期分为下面几个过程

1.初始化(Init)
2.控件状态的装载(LoadControlState)
3.视图装载(LoadViewState)
4.回传的数据处理(LoadPostData)
5.页面加载(OnLoad)
6.渲染(OnPreRender)
7.保存视图状态(SaveViewState)
8.保存控件状态(SaveControlState)
9.呈现(Render)

这里当我在新点击button触发新建DDL控件的事件的时候,这个事件执行了,但是上一次创建的控件并没有保存状态,所以出现了上面的问题
简单研究了一下保存状态的方法,就是把状态保存到HiddenField中

<body>
 <form id="form1" runat="server">
 <div>
  <asp:HiddenField ID="hidden" runat="server" />
  <asp:Button ID="Btn" runat="server" Text="动态创建" 
   onclick="Btn_Click" />
  <asp:Button ID="GetValue" runat="server" Text="获取选中的值" 
   onclick="GetValue_Click" />
  <asp:Label ID="lbl" runat="server" Text=""></asp:Label>
  <asp:Panel ID="PanelControl" runat="server">
  </asp:Panel>
 </div>
 </form>
</body>
</div>

下面是动态创建code  原理为点击按钮 给HiddenField赋值或者可以给ViewState赋值然后再创建控件,这样再每次进入页面的时候,判断iddenField或者Viewstate是否有值,有就显示那个动态创建的控件,这样就把状态保存住了,当你再点击其他控件时,既不会再消失了。

protected void Page_Load(object sender, EventArgs e)
if (!string.IsNullOrEmpty(Hidden.Value) && Hidden.Value=="flag")
{
   CreateDropDownList();
}
if(!isPostBack) //创建控件不能写在这里,这个是判断是否为回发 
{
}
}
protected void Btn_Click(object sender, EventArgs e)//创建控件
{
  Hidden.Value = "flag";//这里说明已经创建过一个控件了
  CreateDropDownList();
}
</div>

接下来是创建ddl的基本代码

private void CreateDropDownList()
{
  DropDownList ddl = new DropDownList();
  ddl.ID = "ddl";
  ddl.Items.Add(new ListItem("1", "1"));
  ddl.AutoPostBack = true;
  ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
  //给ddl添加事件
  PanelControl.Controls.Add(ddl); //放进容器
}
</div>

下面为点击控件  获得动态创建的控件选中的值  道理也是回发

protected void GetValue_Click(object sender, EventArgs e)
{
  DropDownList ddl = PanelControl.FindControl("ddl") as DropDownList;
  if (ddl != null)
  {
   lbl.Text ="点击按钮得到的值为"+ddl.SelectedValue;
  }
}
</div>

动态创建的ddl的事件

protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
  DropDownList ddl= sender as DropDownList;
  if (ddl != null)
  {
   lbl.Text ="通过自身回发事件得到的值为"+ddl.SelectedValue;
  }
}
</div>

希望本文所述对大家的C#程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#动态生成DropDownList执行失败原因分析
  • C#中DropDownList动态生成的方法
  • C# DropDownList中点击打开新窗口的方法

相关文章

  • 2017-05-28C#根据反射和特性实现ORM映射实例分析
  • 2017-05-28C#保存图片到数据库并读取显示图片的方法
  • 2017-05-28c#的时间日期操作示例分享(c#获取当前日期)
  • 2017-05-28C#中WinForm控件的拖动和缩放的实现代码
  • 2017-05-28c#数组详解
  • 2017-05-28详解C#中委托,事件与回调函数讲解
  • 2017-05-28C#实现随机洗牌的方法
  • 2017-05-28异步/多线程/任务/并行编程之一:如何选择合适的多线程模型?
  • 2017-05-28浅析C# 基础语法的使用
  • 2017-05-28C#中StringBuilder类的使用总结

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 详解C# Socket简单例子(服务器与客户端通信)
    • 异步/多线程/任务/并行编程之一:如何选择合适的多线程模型?
    • 如何使用C#读写锁ReaderWriterLockSlim
    • 浅析C#数据类型转换的几种形式
    • C#中的IEnumerable简介及简单实现实例
    • C#使用winform简单导出Excel的方法
    • 使用C#实现RTP数据包传输 参照RFC3550
    • C#数据结构揭秘一
    • C#实现Array添加扩展实例
    • C#窗体编程不显示最小化、最大化、关闭按钮的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有