求教一个关于SelectedIndexChanged或者OnTextChanged的问题

用戶ID080 2018-08-27 02:58:51
各位大佬,请教一个问题,我的页面有很多的OnTextChanged或者SelectedIndexChanged来控制一些文本框的的显示与隐藏,
这些文本框由后台生成的,比如我有两个SelectedIndexChanged,选择第一个SelectedIndexChanged时候我会让后台生成两个文本框,
选择第二SelectedIndexChanged我会让后台生成3个文本框,那么问题就是,我在第一个SelectedIndexChanged生成的两个文本框里输入的值,等在选择第二个SelectedIndexChanged的时候,文本框的值会没有,我想请问一下,怎么才能才服务器回传不清除文本框里的值,(我有很多SelectedIndexChanged和生成的文本框)有谁知道求告解一下,小弟感激不尽!分数不多,请见谅
...全文
162 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
asp.net webform 的知识,如果放到10年前,我会仔细回复一下关于状态、控件重建方面知识。但是现在懒得写了。随便搜了前几年的一个例子你可以参考https://bbs.csdn.net/topics/390691374。2008年开始,我在各处都强调 asp.net webform 核心技术已经被微软抛弃,所以需要转型。因此对于学习 asp.net 的人,如果你研究 asp.net webform 技术本身,那么可以学习。否则你只要知道技术的边界、能识别那些技术上其实对于实用频繁交互式操作的应用程序并不成立的博客上的做法、避免陷阱就行了。
  • 打赏
  • 举报
回复
你可以使用数据绑定控件(例如 DataList)并且使用其模板来定义、动态产生那些所谓的文本框。因为 webform 机制是自动维系 ViewState 的(这是它跟 asp.net mvc 最重大的区别),所以它会自动重建 DataList 下面的子控件、并且回填这些动态控件内容、以及触发子控件各种事件。

如果你自己写代码来“我会让后台生成文本框”,那么你要确定你真的学过 asp.net 控件开发知识,了解 ViewState 机制。否则你 Controls.Add(.....) 这就只是一次性的,并不会在页面回发刷新之后自动重建。你要确定你学过例如 DataList 控件为什么会保持内部子控件的机制,学过例如 TextBox 一旦改变 Style 之后为什么会页面回发时仍然保持 Style 改变值的机制。

asp.net 入门书上都没有有关深入一点的控件开发原理知识。所以如果你仅仅学过一些 asp.net 皮毛,比如说仅仅学 1、2 年这就不大可能学过真正的 asp.net 深入的开发知识,这个时候你就要尽量用 asp.net 入门书上规范的例子来开发。

有的博客上写什么“让后台生成控件”,别轻信。你随便网页面上拖一个 Button 控件,并且双击它产生回发处理事件,这个时候你在开发调试中经常点击这个测试 Button 来回发页面,检验一下博客上所说的所谓“后台动态产生控件”还能不能保持状态,你会发现博客上写的绝大多数都是骗人的,状态都丢失了动态控件丢消失了。这就是因为没有学过 asp.net 控件开发知识造成的。所以你就应该按照 asp.net 入门上的成熟的例子,使用动态绑定控件(例如 Repeater)来产生所谓的子控件,不要自己胡乱发明什么“用代码动态添加文本框”,这种说法你给有点 asp.net 编程经验的人一看、就知道经不起页面回发的检验。
threenewbee 2018-08-27
  • 打赏
  • 举报
回复
autopostback=true设置了没有?
pageload里面
if (!ispostback)
{
页面初始化
}
否则不要初始化
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace 图书管理系统 { public partial class 登录窗口 : Form { //public static string ConnectionString = "Server=(local);database=图书管理库;uid=sa;pwd=1234"; //sql server 混合模式 // public static string ConnectionString = "Server=(local);Integrated Security=SSPI;database=图书管理库"; //windows模式 public string strSQL; public SqlConnection myConnection; public SqlCommandBuilder sqlCmdBld; public DataSet ds = new DataSet(); public SqlDataAdapter da; public int num=0; private DataTable myTable; private DataRow myRow; public static string strUser; public static string strPassword; // public static string strDepartment; public static bool login_flag = false; public 登录窗口() { InitializeComponent(); } private void button2_Click(object sender, EventArgs e) { Close(); } private void 登录窗口_Load(object sender, EventArgs e) { linkdatabase link = new linkdatabase(); //实例化 myConnection = new SqlConnection(link.connectionstring()); //实例化连接 strSQL = "select * from 用户表 "; da = new SqlDataAdapter(strSQL, myConnection); ds.Clear(); da.Fill(ds, "用户表"); //////动作 myTable = ds.Tables["用户表"]; for (int i = 0; i < myTable.Rows.Count; i++) { comboBox1.Items.Add(myTable.Rows[i]["用户名"].ToString().Trim()); } } private void button1_Click(object sender, EventArgs e) { linkdatabase link = new linkdatabase(); //实例化 myConnection = new SqlConnection(link.connectionstring()); //实例化连接 strSQL = "sele

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧