近来做个项目,里面有个内容,需要组合TabStrip和MultiPage,并且是在服务器端动态给MultiPage添加PageView,在每个PageView里面添加用户控件,当用户操作选择后将改变的值保存下来到数据库。显示没啥问题,但是客户端进行提交后,发现回传到服务器的PageView全没了,当然里面的用户控件也没了,也就保存不了了。
设断点,发现回传的MultiPage下的子Controls数量为0!,一个PageView也没有了,真让人惊讶!
于是做了个简单的来测试
if(!IsPostBack)
{
this.TabStrip1.Items.Clear();
for(int i=0;i<3;i++)
{
Tab tab = new Tab();
tab.ID = i.ToString();
tab.Text = i.ToString();
this.TabStrip1.Items.Add(tab);
}
for(int i=0;i<3;i++)
{
PageView pv = new PageView();
pv.ID = i.ToString();
pv.EnableViewState = true;
Label lb = new Label();
lb.Text = i.ToString();
TextBox txt = new TextBox();
txt.Text = i.ToString();
pv.Controls.Add(lb);
pv.Controls.Add(txt);
this.mpage.Controls.Add(pv);
}
}
显示还是没问题,客户端提交,设断点捕获,发现 mpage.Controls.Count = 0
还是没有PageView,查资料,有说PageView本身是个用户控件,用户控件是不保存视图状态的。于是设置了每个PageView的视图状态为true,但是现象还是没变。
实在是搞不清楚,为何会有这样的情况?又该怎样解决呢?
设断点,发现回传的MultiPage下的子Controls数量为0!,一个PageView也没有了,真让人惊讶!
于是做了个简单的来测试
if(!IsPostBack)
{
this.TabStrip1.Items.Clear();
for(int i=0;i<3;i++)
{
Tab tab = new Tab();
tab.ID = i.ToString();
tab.Text = i.ToString();
this.TabStrip1.Items.Add(tab);
}
for(int i=0;i<3;i++)
{
PageView pv = new PageView();
pv.ID = i.ToString();
pv.EnableViewState = true;
Label lb = new Label();
lb.Text = i.ToString();
TextBox txt = new TextBox();
txt.Text = i.ToString();
pv.Controls.Add(lb);
pv.Controls.Add(txt);
this.mpage.Controls.Add(pv);
}
}
显示还是没问题,客户端提交,设断点捕获,发现 mpage.Controls.Count = 0
还是没有PageView,查资料,有说PageView本身是个用户控件,用户控件是不保存视图状态的。于是设置了每个PageView的视图状态为true,但是现象还是没变。
实在是搞不清楚,为何会有这样的情况?又该怎样解决呢?
解决方案 »
- 求一方法将linq查询出的结果IQueryable类型 转换为DataTable类型
- 数据库设计问题 高分求解
- 一c#中防sql注入语句的疑问?
- 请问ASP.NET可否实现网页模板,就是把网页模板可以独立开发出来然后存放到一个目录然后用户可以自己选择
- 为什么这些方法在列表中无法直接选择?
- WEB执行复杂查询超时问题!
- 返回值问题,进来看看
- 苦恼啊!100分请高手出招(服务器回传问题)
- 急问 TreeView联接XML文件
- 那位兄弟能提供一个asp.net的投票系统。我用vb.net做的。谢谢了!!!
- 用DropDownList怎么显示并选择当前日期
- 如何在一个页面中调用另外一个页面的服务器端的函数?
多谢了