这是前段时间做项目遇到的一个问题,做出来的效果图如下,
由会员id查询出会员来,然后开始计费。然后点击结束消费,传到别的页面,主要就是结束时间和开始时间的一个时间差。
用到的数据表设计视图如下,
为了方便研究,我把aspx的代码和cs的代码全部发上来,主要看的地方有,aspx文件的gridview中的TemplateField属性的设置。cs文件下GridView1_RowCreated事件,GridView1_RowCommand事件。
aspx代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="consumeTime.aspx.cs" Inherits="consume_consumeTime" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="../scripts/jquery.min.js"></script>
<script src="../scripts/artDialog4.1.7/artDialog.js?skin=default">function Submit1_onclick() { } </script>
<link type="text/css" rel="stylesheet" href="../inc/skin/default/style.css" />
<title>计时消费</title>
</head>
<script type="text/javascript"> function calc()
{
// mysklp= $.ajax({ url: encodeURI("consumeTime_getsklp.aspx? "), async: false });
$("#mebrid").attr("value", ""+0+""+0+""+0+""+0+""+0+""+0+""+0+""+0+""+0+""+0+"");
//document.getElementById("shuliang").innerHTML=myshuliang.responseText;
//alert("test");
} </script> <body>
<%--<div class="divContentBox">--%> <form runat="server"> <div class="divContentHead">
<img alt="" src="../inc/skin/default/images/ico/coins.png" />
<span style="margin-left:2px;">计时消费</span> </div>
<!--查找-->
<div id=""> <table class="tableStyle" style="width: 100%">
<tr style="color: #333333; background-color: #F7F6F3;">
<td style="text-align:center;">
<asp:Label ID="Label1" runat="server" Text="会员ID"></asp:Label>
<asp:TextBox ID="mebrid" runat="server" ></asp:TextBox>
<label><input type="checkbox" name="sklp" id="sklp" onclick="calc()" />散客令牌</label> <asp:Button ID="Button2" runat="server" Text="开始计费" class="buttonColor" onclick="Button2_Click"
/> </td>
</tr> </table>
</div>
<asp:GridView ID="GridView1" runat="server" DataSourceID="AccessDataSource1"
AllowPaging="True" AutoGenerateColumns="False"
CellPadding="4" DataKeyNames="ID" ForeColor="#333333" GridLines="None"
Width="1300px" AllowSorting="True" onrowcommand="GridView1_RowCommand"
onrowcreated="GridView1_RowCreated"
>
<RowStyle BackColor="#EFF3FB" />
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False"
ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="mebrId" HeaderText="会员卡号"
SortExpression="mebrId" />
<asp:BoundField DataField="mebrName" HeaderText="会员姓名"
SortExpression="mebrName" />
<asp:BoundField DataField="ksTime" HeaderText="开始时间"
SortExpression="ksTime" />
<asp:BoundField DataField="jsTime" HeaderText="结束时间"
SortExpression="jsTime" />
<asp:BoundField DataField="st" HeaderText="消费状态" SortExpression="st" />
<asp:BoundField DataField="ksCzy" HeaderText="开始操作员" SortExpression="ksCzy" />
<asp:BoundField DataField="jsCzy" HeaderText="结束操作员" SortExpression="jsCzy" />
<asp:TemplateField ShowHeader="False"> <ItemTemplate>
<asp:Button ID="bt" runat="server" CausesValidation="false" CommandName="xfjs" CommandArgument="<%#((GridViewRow)Container).RowIndex%>" Text="消费结束" />
</ItemTemplate> </asp:TemplateField>
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView> <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/db/mem.mdb"
SelectCommand="SELECT * FROM [jsxf]">
</asp:AccessDataSource> </form> </div>
</body>
</html>
aspx
cs代码如下:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq; public partial class consume_consumeTime : System.Web.UI.Page
{ public string SQLStrings = "SELECT * FROM [jsxf] WHERE 1=1";//查找语句 如果为空则忽略此值
public string czy;
public string mid="";
public string memname="" ;
public Common.MBERINFO meminfo;
// public string Sql1, sql1;
//public string b;//一列遍历
public TimeSpan dd;//保存计算时间
public string aa,bb,PostPS,hh ;//会员卡号,消费状态,传送备注,开始时间
public DateTime ksTime, jsTime;//定义开始时间和结束时间
string Dp; protected void ShowList(string strSql) //显示列表
{
AccessDataSource1.DataFile = MemData.ClassData.DataFilePath;
AccessDataSource1.SelectCommand = strSql;
GridView1.DataSourceID = "AccessDataSource1";
}
string Czy;
protected void Showlist(string strSQL)//显示列表
{
AccessDataSource1.DataFile = MemData.ClassData.DataFilePath;
AccessDataSource1.SelectCommand = strSQL;
GridView1.DataSourceID = "AccessDataSource1"; } protected void Page_Load(object sender, EventArgs e)
{ if (null == Session[Common.ClassCommon.NowAdmin] || "" == Session[Common.ClassCommon.NowAdmin].ToString())
{
Response.Write("<script language='javascript'>alert('请先登录!');</script>");
Response.Write("<script language='javascript'>window.location.href='../Default.aspx';</script>"); }
else
{
if (MemData.ClassData.IsCzyHasRight("计时消费") == false)
{
Response.Write("<script language='javascript'>alert('您没有查看此页面的权限!');</script>");
Response.Write("<script language='javascript'>window.location.href='../startpage.aspx';</script>");
}
} SQLStrings = "SELECT * FROM [jsxf] WHERE ( 1=1 "; //判断id条件
if (mebrid.Text != "")
{
string idstr = mebrid.Text.ToString();
SQLStrings += "AND [mebrId] = '" + idstr + "'"; }
SQLStrings += ")order by ID DESC"; ShowList(SQLStrings);
} //绑定行列号
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Button bt = e.Row.FindControl("bt") as Button;
bt.CommandArgument = e.Row.RowIndex.ToString(); }
} //点击开始消费按钮
protected void Button2_Click(object sender, EventArgs e) {
if (null != Request["mebrid"])//获取输入id
mid = Request["mebrid"]; memname = MemData.ClassData.GetMemName(mid);//获取会员名称 meminfo=MemData.ClassData.GetMberInfoByID(mid);//有id获取会员信息 if (mid != meminfo.MberID)
{
Response.Write("<script language='javascript'>alert('指定的会员不存在!');history.go(-1);</script>");
Response.End();
} SQLStrings = "SELECT * FROM [jsxf] WHERE ( 1=1 "; //判断id条件
if (mebrid.Text != "")
{
string idstr = mebrid.Text.ToString();
SQLStrings += "AND [mebrId] = '" + idstr + "'"; }
SQLStrings += ")order by ID DESC"; if ("" != mid) //如果输入卡号不为空
{ czy = MemData.ClassData.GetNowCzy(); string strSql = "insert into jsxf (mebrId,mebrName,ksTime,jsTime,st,ksCzy,jsCzy) values ( '" + mid + "','" + memname + "','" + DateTime.Now.ToString() + "','" + DateTime.Today.ToString() + "','" + "正在消费" + "','" + czy + "','" + "" + "' ) "; int r9 = MemData.ClassData.ExecSql(strSql);
if (- == r9 || - == r9)
Response.Write("<script language='javascript'>alert('系统异常!');history.go(-1);</script>"); } ShowList(SQLStrings);//显示列表 } protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{ if (null != Request["mebrid"])//获取输入id
mid = Request["mebrid"]; memname = MemData.ClassData.GetMemName(mid);//获取会员名称 meminfo = MemData.ClassData.GetMberInfoByID(mid);//有id获取会员信息 if (e.CommandName == "xfjs")//buttonCommandName
{
int index = Convert.ToInt32(e.CommandArgument); aa = GridView1.Rows[index].Cells[].Text.ToString();//会员id
bb = GridView1.Rows[index].Cells[].Text.ToString();//消费状态 czy = MemData.ClassData.GetNowCzy(); string Sql1 = "update jsxf set jsTime='" + DateTime.Now.ToString() + "'where mebrId='" + aa + "' and st = '" + "正在消费" + "'";
string sql1 = "update jsxf set jsCzy='" + czy + "'where mebrId='" + aa + "' and st = '" + "正在消费" + "'";
string sQl1 = "update jsxf set st='" + "结束消费" + "'where mebrId='" + aa + "' and st = '" + "正在消费" + "'"; int r3 = MemData.ClassData.ExecSql(sql1);
if (- == r3 || - == r3)
Response.Write("<script language='javascript'>alert('系统异常!');history.go(-1);</script>"); int r4 = MemData.ClassData.ExecSql(Sql1);
if (- == r4 || - == r4)
Response.Write("<script language='javascript'>alert('系统异常!');history.go(-1);</script>"); int r6 = MemData.ClassData.ExecSql(sQl1);
if (- == r6 || - == r6)
Response.Write("<script language='javascript'>alert('系统异常!');history.go(-1);</script>"); SQLStrings = "SELECT * FROM [jsxf] WHERE ( 1=1 "; //判断id条件
if (mebrid.Text != "")
{
string idstr = mebrid.Text.ToString();
SQLStrings += "AND [mebrId] = '" + idstr + "'"; }
SQLStrings += ")order by ID DESC"; ShowList(SQLStrings); if (bb != "'" + "正在消费" + "'")//判断消费状态
{ hh = GridView1.Rows[index].Cells[].Text.ToString();//开始时间 string jstime = DateTime.Now.ToString();//获取当前 结束消费 按下时间
DateTime s2 = Convert.ToDateTime(jstime);
string t1 = hh;
//string t2 = jstime; DateTime s1 = DateTime.Parse(t1);
// DateTime s2 = DateTime.Parse(t2); dd = s2.Subtract(s1); //当前时间减去开始时间 PostPS = "会员ID:" + aa + ",会员姓名:" + memname.ToString() + ",消费时间:" + dd.ToString() + "";//传递PS,传到另一个页面进行计算 Response.Redirect("fastConsume.aspx?PostID="+mid+"&PostPS="+PostPS+"&suc=no"); } }
} //protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
//{
// if (e.Row.RowType == DataControlRowType.DataRow)
// {
// Button bt = new Button();
// bt = (Button)e.Row.Cells[1].FindControl("bt");
// bt.CommandArgument = e.Row.RowIndex.ToString(); // } //} }
cs