ASP.NET动态添加文本框参考做法

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 19:37 点击:

在ASP.NET开发中,有时需要动态添加表单元素,即在运行时根据用户的需求选择,往页面上添加指定数量的表单元素。一般容易犯的错误,是用开发Winform应用程序的思路,在后台简单编写诸如下面的代码:
TextBox tb=new TextBox();
div1.Controls.Add(tb);
WebForm有个特点,应用程序的界面和后台逻辑是分别运行在不同地方,即浏览器端负责页面的解析和显示,服务器端负责页面的主要生成(javascript等浏览器端脚本也可负责一部分生成,所以这里称为“主要生成”),浏览器-服务器之间的请求响应遵从http协议,http是一种无状态的连接。在ASP.NET中,浏览器端每次请求页面,服务器都会重新生成相应的Page。如果后台动态添加控件或表单元素到页面,则当下次客户submit后,会发现新添加的东西会丢失,这是因为动态添加的控件在aspx文件中不存在,所以它的ViewState没有起作用,相应的视图状态没有保持下来。虽然有一些服务器端的方法可以解决这个问题,但解决的比较繁琐,我认为较佳的做法还是在浏览器端用javascript动态添加。下面这个例子很能说明问题,也比较容易弄懂。
Default.aspx文件:
 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>
 2
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 <html xmlns="http://www.w3.org/1999/xhtml">
 5 <head id="Head1" runat="server">
 6     <title></title>
 7     <script>
 8     function createInputTexts(Xselect)
 9     {
10         if (Xselect.selectedIndex > 0)
11         {
12             var div1 = document.getElementById("div1");
13             div1.innerHTML = "";
14             var count = parseInt(Xselect.options[Xselect.selectedIndex].value);
15             for (var i = 0; i < count; i++)
16                 div1.innerHTML = div1.innerHTML + "<input type='text' name='userInfo" + i + "' /><br/>";
17             div1.innerHTML = div1.innerHTML + "<input type='hidden' name='textCount' value='" + count + "' />";
18         }
19     }
20     </script>
21 </head>
22 <body>
23     <form id="form1" runat="server">
24     <asp:DropDownList ID="DropDownList1" runat="server" onchange="createInputTexts(this)">
25         <asp:ListItem>请选择…</asp:ListItem>
26         <asp:ListItem>1</asp:ListItem>
27         <asp:ListItem>2</asp:ListItem>
28         <asp:ListItem>3</asp:ListItem>
29         <asp:ListItem>4</asp:ListItem>
30         <asp:ListItem>5</asp:ListItem>
31     </asp:DropDownList>
32     <div id="div1"></div>
33     <asp:Button ID="Button1"

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • 浅析.NET下XML数据访问新机制
      • asp.net 面试+笔试题目第1/2页
      • C# 邮件地址是否合法的验证
      • C#高级编程:数据库连接[1]
      • asp.net 设置GridView的选中行的实现代码
      • 经典C++程序1
      • IIS 自动回收导致后台定时器失效的问题解决
      • ASP.NET&#160;GridView列表代码示例
      • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1