这是项目中的一个小的要求:根据从两个时间控件(ASPxDateEdit)选择的日期范围,然后点击搜索,讲结果显示在下面的gridview中(使用的是DEV控件)。。。。比如我选择了两个日期并形成了一个日期范围,点击搜索,所有的在此日期范围的内的记录就全部显示了
在aspx中的代码如下:
<td class="style2">
时间搜索范围
</td>
<td width="90px">
<dx:ASPxDateEdit runat="server" Width="90px" ID="dbTimeSeach1" ClientInstanceName="dbTimeSeach1"></dx:ASPxDateEdit>
</td>
<td>至</td>
<td width="90px">
<dx:ASPxDateEdit ID="dbTimeSeach2" runat="server" Width="90px" ClientInstanceName="dbTimeSeach2"></dx:ASPxDateEdit>
</td>
在cs中的已经有的搜索函数是如下(本来已经有一个根据主装置和记录状态搜索)
数据库的表中时间字段是noteTime
//综合的查询方法
1 private void GetList() 2 { 3 SearchCondition searchObj = new SearchCondition(); 4 searchObj.AddCondition("tb_Device.parentDeviceID", SqlOperator.Equal, MainDeviceID); //主装置 5 searchObj.AddCondition("tb_SafetyValveNotepad.deviceID", SqlOperator.In, string.Join(",", base.ListUserDeviceID)); 6 searchObj.AddCondition("recordStatus", SqlOperator.Equal, SelectedRecordStatus); //记录状态 7 searchObj.AddCondition("noteTime",SqlOperator.Between,????);//这里的问号不知道该怎么填 8 9 string strWhere = searchObj.BuildConditionSql(); 10 11 gvList.DataSource = new BLL.tb_SafetyValveNotepad().GetList(strWhere).Tables[0]; 12 gvList.DataBind(); 13 }
protected void gvList_CustomCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewCustomCallbackEventArgs e) { string param = e.Parameters; if (param.Contains(",")) //单击搜索按钮 { string[] parameters = param.Split(','); MainDeviceID = parameters[0]; SelectedRecordStatus = parameters[1]; GetList(); gvList.Selection.UnselectAll();//重新搜索后,清除gvlist的选择 SetButtonVisible(); } else { BLL.tb_SafetyValveNotepad bll = new BLL.tb_SafetyValveNotepad(); Model.tb_SafetyValveNotepad model; List<Object> notepadIDs = gvList.GetSelectedFieldValues("notepadID"); foreach (object notepadID in notepadIDs) { if (param == "delete") //单击删除按钮 { bll.Delete(notepadID.ToString()); } else { model = bll.GetModel(notepadID.ToString()); if (param == "submit") //单击提交按钮 { model.recordStatus = CommonService.GetRecordStatusValue(RecordStatus.Unverified); //保存最近一次提交人和提交时间,因为不同的用户可以管理同一装置 model.createUserID = base.UserID; model.createTime = DateTime.Now; } if (param == "verify") //单击审核按钮 { model.recordStatus = CommonService.GetRecordStatusValue(RecordStatus.Verified); model.verifyUserID = base.UserID; model.verifyTime = DateTime.Now; } else if (param == "reject") //单击退回按钮 { model.recordStatus = CommonService.GetRecordStatusValue(RecordStatus.Rejected); model.verifyUserID = base.UserID; model.verifyTime = DateTime.Now; string rejectReason = "[" + DateTime.Now.ToShortDateString() + " " + base.TrueName + "]" + txtRejectReason.Text;//填写退回原因 model.rejectReason = string.IsNullOrWhiteSpace(model.rejectReason) ? rejectReason : rejectReason + Environment.NewLine + model.rejectReason; } bll.Update(model); } } GetList(); gvList.Selection.UnselectAll(); } }
sql语句应该是SELECT 字段 FROM Table WHERE noteTime BETWEEN startTime AND endTime,
其中startTime是开始时间 startTime=dbTimeSeach1.Text,endTime是结束时间 endTime=dbTimeSeach1.Text
你的控件可是不是Text,自己替换一下
在你的程序中,应该是
searchObj.AddCondition("noteTime",SqlOperator.Between,startTime,endTime)我猜测,你的这个方法应该是有两个参数的
干嘛那么麻烦,直接写SQL语句不是更好?
同意楼上意见,直接将时间参数传入sql语句中进行查询,不就行了嘛,但要记住,在比较时要将时间值与比较参数值转化为时间格式的