formview中的AJAX Tabcontainer不插入值

时间:2009-06-09 12:27:39

标签: ajax formview tabcontainer

我在数据绑定FormView中有一个TabContainer(按类别显示信息:客户生物数据,健康历史,财务详细信息......)。 formView的更新和​​插入不起作用(将NULL值发布到数据库) - 我想FormView无法在选项卡容器的选项卡面板中找到TextBox。

有些论坛说这是因为TabContainer的实现(按设计)为“INamingContainer”,而黑客就是控制TabContainer的 源代码(ajax ctl工具包的源代码)并从中删除“INamingContainer”界面......太复杂了我的口味..我有点迷失。

有没有一个直接的,更好的方法来解决这个问题?令我眼花缭乱的是,工具包未能实现这个基本的功能,因为大多数开发人员订购信息(选项卡控件)都是常见的需求。

提前致谢, Jeewai

1 个答案:

答案 0 :(得分:2)

回答我自己的帖子......我从asp.net论坛得到了一些很棒的内容,并决定在这里发布解决方案:重现帮助我的解释:

希望能够向可能遇到同样问题的其他用户清除一些问题。

最佳, JY

  

块引用   嗨JY,

简短的回答是,在编译Bind语句时,在提取插入/更新的值时存在一些限制。如果FormView中的控件在另一个命名容器内(TabContainer和TabPanel都是命名容器),则编译器无法解析如何从TextBox中提取值。我在http://www.aarongoldenthal.com/post/2009/03/15/ASPNET-Databinding-Bind()-Method-Dissected.aspx的博客上对此进行了更详细的讨论。

要解决此问题,您需要手动提取值,例如:

protected void FormView1_ItemUpdating(object sender,FormViewUpdateEventArgs e) {     //获取对控件的引用     TextBox LastNameTextBox = FormView1.FindControl(“TabContainer1”)。FindControl(“TabPanel1”)。FindControl(“LastNameTextBox”)为TextBox;

// Set update parameters in datasource
ObjectDataSource1.UpdateParameters["LastName"].DefaultValue = LastNameTextBox.Text;

}

由于FindControl只搜索当前的命名容器,因此您需要深入了解每个命名容器(FormView,TabContainer和TabPanel)以获取TextBox。

希望有所帮助。

亚伦

  

块引用