为了账号安全,请及时绑定邮箱和手机立即绑定

实现一个搜索功能思路

标签:
Html/CSS

搜索介面如下:


程序中需要实现如上的一个搜索功能。
[Option]有两个选项,说明结果需要一个Detail或Summary。这是二选一,而且必选一个。
[By]选择是让用户填入用户信息,或是选择部门。 当用户选择用户选择,在下出现文本框,让用户填入用户名;当用户选择部门时,在下出现下拉列表,让用户选择部门。


[DateTime]选择,也有两种情况选择,一个是选择年月份的,默认是当前年份,用户选择年份之后,选择月份;  另一个选择日期,当选择日期选项,在下出现两个文本框,可输入开始与结束日期的,也可以选择。


分析,总共6个选择,2种结果,4个条件(用户,部门,日期或月份),因此将有8个参数,这个8个参数为:@Option; @By; @ByValue; @Dt; @FDate; @EDate; @YValue; @MValue
这些参数与参数值一次性传入存储过程中。在存储过程中处理这些条件逻辑。

为做好这个搜索与显示,Insus.NET决定在前台放置一个GridView,显示结果。

 <asp:GridView ID="GridViewResult" runat="server" Width="100%" CellPadding="3" CellSpacing="0" BorderWidth="1" BorderColor="#c0c0c0" HeaderStyle-Height="25px" RowStyle-Height="25px" HeaderStyle-BackColor="#efebde"></asp:GridView>


这样可以动态装载各种样式的表格。

 

ok,重点在存储过程,完成所有条件,需要写好几个存储过程,首先是入口存储过程:

上面入口的存储过程,需要判断用户选择的By选择,如果是选择了'User',那就执行[dbo].[usp_PrintLog_SearchByUser],如果是选择了'Department',存储过程将执行[dbo].[usp_PrintLog_SearchByDept]。在不管是1还是2的子存储过程,已经少带了@By这个参数了。

下面我们分别来看这两个存储过程,先看第一个子存过程,需要处理@Option参数。



第二个子存储过程,需要处理@Option参数。


其中1,2,3,4存储过程,大约如下:


这样子,不管用户作出怎样的选择,均只返回一种结果,不必在程序中去做任何判断,以及与数据库多次交互。

 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消