在ASP.NET中构建动态“高级搜索”控件的建议
|
alt text http://img3.imageshack.us/img3/1488/advancedsearch.png 我正在ASP.NET应用程序中构建“高级搜索”界面.我不需要为我写这个东西,但我坚持一个关于动态控件和ViewState的特定问题.我想知道如何处理这个方向.这是我的情况: 配料: >一组可维护的API对象,表示实体,字段和搜索,用于处理构建搜索,生成SQL和返回结果.所以这一切都得到了照顾. 所需的接口功能: (1)在初始页面加载时,界面获得一个预先配置的Search对象,其中包含一组SearchCriterion对象.它将它们绑定到一组控件中(参见上图). >有些搜索项目更简单,例如: Field(DropDownList)|运算符(DropDownList)|价值(TextBox) Field(DropDownList)|运算符(DropDownList)|值(DropDownList),其中“值”下拉列表由数据库查询填充. Field(DropDownList)字段(DropDownList)|运算符(DropDownList)|值 (2)用户通过以下方式修改搜索: >单击相应按钮添加和删除搜索条件 (3)最后,用户点击“搜索”以查看他们的结果. 问题: 您可能已经知道如果您正在回答此问题,动态添加到页面的控件将在回发时消失.我已经创建了一个UserControl来操作控件集合并巧妙地完成上面的步骤(1),如附图所示. (显然,我现在并不关心风格.) 但是在Postback上,控件全部消失,我的Search API对象消失了.如果我可以让动态生成的控件集合发挥得很好并坚持使用ViewState,我可以检查回发上的控件,重建Search对象,然后整齐地处理控件事件. 可能的解决方案 >我可以使Search对象可序列化并将其存储在viewstate中.然后在页面加载时我可以抓住它并在页面加载时重建控件集合.但是我不确定这是否可以很好地控制引发事件,以及包含数据库数据的下拉列表的视图状态会发生什么 – 我可以把它取回来吗?我不得不在每次回发时重新查询数据库. 谢谢你的帮助. 解决方法我已经编写了大约一天的时间,并且使用我在我的问题中提出的第三个选项 – 老式的数据绑定控件,让我的工作非常漂亮.实际上,当我不得不详细地写出这个问题时,我才想到了这个想法 – 这不是一直发生在你身上吗?我将我的SearchCriterionControl放入一个asp:Repeater并将其绑定到我的对象集合.对于Field Chooser,我在嵌套的asp:Repeater中放置了一个asp:DropDownList,并将Field数组绑定到该数组.一切都很好,保持状态,实际上只需要很少的代码.所以我从来没有动态添加控件到页面,谢天谢地. 感谢您的建议,Ender,Matt和andrewWinn. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- .net – 每个堆栈跟踪线末尾的标志是什么?
- 实体框架 – MVC 3 EF 4.1 dbContext – 删除具有不可空的外
- asp.net – T-SQL中的HTML编码?
- asp.net-mvc – 在asp.net mvc中的视图中设置页面标题,元信
- iis – ASP / ASP.NET处理写权限的最佳方法是什么?
- asp.net-mvc – 我可以从HttpContext获取控制器吗?
- asp.net-mvc – 使用UIHint的ASP.NET MVC 3自定义显示模板
- 在ASP.NET捆绑和缩小中将样式的URL转换为CDN URL
- asp.net-mvc – 如何使更多MapHttpRoutes为MVC 4 Api
- ASP.NET登录/成员资格 – 如何注销?
