1、今日完成任务:
(1)跳转到显示票务信息页面时修改数据库中车次的状态,当现在时间大于车次发车时间则将车次状态设置为已发车
(2)显示未发车车次信息
(3)复合查询
2、核心源码:
(1)页面效果

(2)前台代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<link href="../css/reset.css" rel="stylesheet" />
<link href="../css/iconfont.css" rel="stylesheet" />
<link href="../css/aa.css" rel="stylesheet" />
<script src="../js/jquery-1.9.1.min.js"></script>
<script src="../js/f.js"></script>
<script src="../js/laydate/laydate.js"></script>
<script>
//执行一个laydate实例
laydate.render({
elem: '#test1' //指定元素
});
</script>
<style type="text/css">
.icon-weibiaoti1:before {
content: "e695";
}
.icon-xinxiliulan:before {
content: "e614";
}
#test1{clear:both;border:1px solid #ccc;height:25px;position:relative; left:50px;bottom:20px;}
.InputDiv{border:none;}
#txtCfd,#txtMdd{border:1px solid #ccc;height:25px;}
#btnSelect{color:#fff;}
.auto-style1 {
background: #fff;
margin-left: 40px;
}
.headboxtext{
height:30px;
line-height:30px;
}
#GridView1{
text-align:center;
}
</style>
<title>产品管理</title>
</head>
<body>
<form id="form1" runat="server">
<div class="PublicHead clearfix">
<div class="leftBox clearfix">
<!--<div class="companyLogo">
<img src="images/logo.jpg" />
</div>-->
<!--<i class="iconfont icon-caidan"></i>-->
<div class="companyText">
客车网上售票系统
</div>
</div>
<div class="RightBox clearfix">
<div class="UserPhotoBox">
<div class="UserPic">
<img src="../Images/user.jpg"/>
</div>
<div class="UserName">
用户
</div>
</div>
<a href="Login.aspx">
<div class="dropOutBox">
<i class="iconfont icon-app_icons--">
</i>
<span>退出</span>
</div>
</a>
</div>
</div>
<div class="PublicDownWhole clearfix">
<!--左侧-->
<div class="leftBox">
<ul>
<a href="UserManagement.html"> <li class=""><i class="iconfont icon-yonghuguanli"></i><span>用户管理</span></li></a>
<a href="SelectTicket.aspx">
<li class="Select"><i class="iconfont icon-tubiao_dingdan"></i><span>票务查询</span></li>
</a>
<a href="ClassificationManagement.html">
<li><i class="iconfont icon-fenlei"></i><span>我的订单</span></li>
</a>
<a href="ProductManagement.html"> <li><i class="iconfont icon-weibiaoti1"></i><span>留言板</span></li></a>
<a href="ProductManagement.html"> <li><i class="iconfont icon-xinxiliulan"></i><span>信息浏览</span></li></a>
</ul>
</div>
<!--右侧-->
<div class="RightBox">
<div class="PublicContentBox">
<!--公用指向页面名字-->
<div class="PublicPointToAgeText">
<span class="span1">客车网上售票系统 </span> <span class="span2">票务查询</span>
</div>
<!--查询-->
<div class="InquireBox clearfix">
<div class="InquireleftBox">
<div class="Text">出发地:</div>
<div class="InputDiv"> <asp:TextBox ID="txtCfd" runat="server"></asp:TextBox></div>
</div>
<div class="InquireleftBox">
<div class="Text">目的地:</div>
<div class="InputDiv"> <asp:TextBox ID="txtMdd" runat="server"></asp:TextBox></div>
</div>
<div class="InquireleftBox" >
<div class="layui-inline">
<label class="layui-form-label">日期:</label>
<div class="layui-input-inline">
<asp:textBox runat="server" class="layui-input" id="test1"></asp:textBox>
</div>
</div>
</div>
<div class="PublicBtnIcon Color1Btn fr">
<i class="iconfont icon-icon-chaxun"></i>
<%--<span>查询</span>--%>
<asp:Button ID="btnSelect" runat="server" Text="查询" OnClick="btnSelect_Click" style=" 38px" />
</div>
</div>
<!--表修改-->
<div class="auto-style1" style="margin-left:0px; height:700px;">
<div class="headbox">
<div class="headboxtext">
<%--<span class="span1">车票查询</span>--%>
<asp:Label ID="lblSelect" runat="server" Text="车票查询"></asp:Label>
</div>
</div>
<!--查询到的表格-->
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" Height="293px" Width="826px" Font-Size="Medium" PageSize="5" DataKeyNames="Cid">
<Columns>
<asp:BoundField DataField="Tname" HeaderText="车次" />
<asp:BoundField DataField="Begin_sta" HeaderText="出发站" />
<asp:BoundField DataField="End_sta" HeaderText="到达站" />
<asp:BoundField DataField="Start_time" HeaderText="出发时间" />
<asp:BoundField DataField="End_time" HeaderText="到站时间" />
<asp:BoundField DataField="Price" HeaderText="价格" />
<asp:TemplateField HeaderText="备注">
<ItemTemplate>
<asp:LinkButton ID="LinkButton2" runat="server" PostBackUrl='<%# Eval("Cid", "~/Member/bookTicket.aspx?Cid={0}") %>'>预订</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#FFF1D4" />
<SortedAscendingHeaderStyle BackColor="#B95C30" />
<SortedDescendingCellStyle BackColor="#F1E5CE" />
<SortedDescendingHeaderStyle BackColor="#93451F" />
</asp:GridView>
</div>
</div>
</div>
</div>
</form>
</body>
</html>
(3)根据现在当前时间修改数据库中车次状态
protected void Update() { //获取当前日期 DateTime date = Convert.ToDateTime(DateTime.Now.ToShortDateString()); //获取当前时间 DateTime time = Convert.ToDateTime(DateTime.Now.ToShortTimeString().ToString()); DataSet ds = bll.GetData(); Carinfo carinfo = new Carinfo(); foreach (DataRow r in ds.Tables[0].Rows) { carinfo.Cid = Convert.ToInt32(r["Cid"]); carinfo.Start_date =r["Start_date"].ToString(); carinfo.Start_time = r["Start_time"].ToString(); //强制转换 DateTime date2 = Convert.ToDateTime(carinfo.Start_date); DateTime time2 = Convert.ToDateTime(carinfo.Start_time); //比较 if (DateTime.Compare(date, date2) > 0) { //当前日期大于发车日期 已发车 bll.UpdateCmark(carinfo.Cid); } else if (DateTime.Compare(date, date2) == 0) { if (DateTime.Compare(time, time2) > 0) { bll.UpdateCmark(carinfo.Cid); } } } } DAL层: public void UpdateCmark(int cid) { string sql = $"update Carinfo set Cmark=1 where Cid={cid}"; int num=dbHelper.ExecuteNonQuery(sql); }
(4)显示未发车车次信息(后台代码)
protected void BindGv() { this.GridView1.DataSource = bll.GetData(); this.GridView1.DataBind(); } DAL层: public DataSet GetData() { string sql = "select * from Traininfo inner join Carinfo on Traininfo.Tid=Carinfo.Tid where Cmark=0"; DataSet ds = dbHelper.GetData(sql); return ds; }
(4)根据用户的需求进行复合查询(后台代码)
/// <summary> /// 查询 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnSelect_Click(object sender, EventArgs e) { //从前台获取数据 //出发地 string cfd = this.txtCfd.Text; //目的地 string mdd = this.txtMdd.Text; string date = DateTime.MinValue.ToString(); if (this.test1.Text!="") { //出发日期 date =this.test1.Text; } this.GridView1.DataSource = bll.GetDataByInfo(cfd, mdd, date); this.GridView1.DataBind(); } DAL层: public DataSet GetDataByInfo(string beginSta,string endSta,string date) { string sql = $"select * from Traininfo inner join Carinfo on Traininfo.Tid=Carinfo.Tid where Cmark=0 and 1=1 "; if (beginSta!="") { sql += $"and Begin_sta ='{beginSta}'"; } if (endSta!="") { sql += $"and End_sta='{endSta}'"; } if (date!=DateTime.MinValue.ToString()) { sql += $"and Start_date='{date}'"; } DataSet ds = dbHelper.GetData(sql); return ds; }
3、遇到的问题:
(1)在最初写的时候没有注意修改车次状态的情况
(2)datetime类型的字段从前台获取到的数据形式和数据库中的形式不一样
4、解决的方法:
(1)在写后边代码时发现问题并解决
(2)网上百度查找解决方案