formview 内的 AJAX Tabcontainer 不插入值

2024-03-23

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

一些论坛说这是因为 TabContainer 的“INamingContainer”实现(通过设计)造成的,而 hack 就是控制 TabContainer 源代码(ajax ctl工具包的源代码)并从中删除“INamingContainer”接口...对我来说太复杂了..我有点迷失了。

那么有没有一种直接且更好的方法来解决这个问题呢?我很惊讶地发现该工具包未能实现这一基本功能,因为对于大多数开发人员来说,使用 formview 订购信息(选项卡控件)是一种常见的需求。

提前致谢, 吉外


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

希望这能为可能遇到同样问题的其他用户解决一些问题。

Best, JY

块引用 嗨,JY,

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

为了解决这个问题,您需要手动提取值,例如:

protected void FormView1_ItemUpdating(对象发送者,FormViewUpdateEventArgs e) { // 获取控件的引用 TextBox LastNameTextBox= FormView1.FindControl("TabContainer1").FindControl("TabPanel1").FindControl("LastNameTextBox") as TextBox;

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

}

由于 FindControl 仅搜索当前命名容器,因此您需要深入研究每个命名容器(FormView、TabContainer 和 TabPanel)才能找到 TextBox。

希望有帮助。

Aaron

块引用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

formview 内的 AJAX Tabcontainer 不插入值 的相关文章

随机推荐