4.利用ShowModalDialog()函数弹出页面窗口,选择备注信息。
HTML语言:
<head runat="server">
<title>弹出窗体</title>
<base target="_self"></base>
</head>
<body>
<form id="form1" runat="server" >
<div>
<table style="width: 256px">
<tr>
<td style="height: 2px" colspan="2">
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/dinner.mdb"
SelectCommand="SELECT [dinner_memo], [memo_rmk] FROM [dinner_memo] ORDER BY [dinner_memo]">
</asp:AccessDataSource>
</td>
</tr>
</table>
<br />
<table style="width: 272px">
<tr>
<td style="width: 18px">
</td>
<td style="width: 28px">
</td>
<td style="width: 28px">
</td>
</tr>
<tr>
<td style="width: 18px; height: 9px">
</td>
<td style="width: 28px; height: 9px">
<asp:Label ID="Label1" runat="server" Font-Bold="True" Font-Size="Medium" Text="请选择原因"
Width="89px"></asp:Label></td>
<td style="width: 28px; height: 9px">
<asp:DropDownList ID="ddlMemoTxt" runat="server" Font-Size="Medium" Width="141px" DataSourceID="AccessDataSource1" DataTextField="memo_rmk" DataValueField="memo_rmk">
</asp:DropDownList></td>
</tr>
<tr>
<td align="left" style="width: 18px; height: 19px">
</td>
<td align="left" style="width: 28px; height: 19px">
</td>
<td align="left" style="width: 28px; height: 19px">
</td>
</tr>
<tr>
<td align="left" style="width: 18px">
</td>
<td align="left" style="width: 28px">
<asp:Button ID="btSubmit" runat="server" OnClick="btSubmit_Click" Text="确定" Font-Bold="True" Font-Size="Medium" /></td>
<td align="left" style="width: 28px">
<asp:Button ID="btExit" runat="server"
Font-Bold="True" Font-Size="Medium" OnClick="btExit_Click" Text="取消" /></td>
</tr>
</table>
</div>
<br />
</form>
</body>
C#语句:
//弹出窗体函数
protected void showDialog()
{
StringBuilder s = new StringBuilder();
s.Append("<script language=javascript>" + "\n");
s.Append("var a=window.showModalDialog('submitBX.aspx',window,'dialogHeight:200px;dialogWidth:290px;edge:Raised;center:Yes;help:Yes;resizable:No;scroll:no;status:No;');" + "\n"); //弹出窗口
s.Append("if(a!=null)" + "\n");
s.Append("document.all('txtDialog').value=a;" + "\n"); //返回值填充
s.Append("</script>");
Type cstype = this.GetType();
ClientScriptManager cs = Page.ClientScript;
string sname = "showD";
if (!cs.IsStartupScriptRegistered(cstype, sname))
cs.RegisterStartupScript(cstype, sname, s.ToString()); //执行命令集
}
//弹出的窗体返回值
protected void returnDX()
{
StringBuilder s = new StringBuilder();
s.Append("<script language=javascript>" + "\n");
s.Append("window.returnValue='" + this.GetSelectValue() + "';" + "\n"); //获得返回值
s.Append("window.close();" + "\n");
s.Append("</script>");
Type cstype = this.GetType();
ClientScriptManager cs = Page.ClientScript;
string csname = "returnD";
if (!cs.IsStartupScriptRegistered(cstype, csname))
cs.RegisterStartupScript(cstype, csname, s.ToString()); //执行命令集
}
private string GetSelectValue()
{ string rv = this.ddlMemoTxt.SelectedValue; //获得选定的备注内容
return rv;
}
5.利用AJAX技术的Timer控件实时显示当前时间,类似电子秒表。
HTML语言:
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:Label ID="Label7" runat="server" Font-Bold="True" ForeColor="Red" Text="当前时间:" Width="95px"></asp:Label>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:Label ID="lblTim" runat="server" Width="392px" Font-Bold="True" ForeColor="Green" Font-Size="Medium"></asp:Label>
</ContentTemplate>
<Triggers> <asp:AsyncPostBackTrigger ControlID="timShow" EventName="Tick"/> </Triggers> </asp:UpdatePanel>
<asp:Timer ID="timShow" runat="server" OnTick="timShow_Tick" Interval="1000" ></asp:Timer>
C#语句:
protected void timShow_Tick(object sender, EventArgs e) //定时显示日期和时间
{
lblTim.Text = System.DateTime.Now.GetDateTimeFormats('T')[0].ToString() + " " + System.DateTime.Now.GetDateTimeFormats('D')[3].ToString();
}
四、订餐汇总
通过C#语言动态改变GridView控件的显示列数,使含有不同字段数的数据源可以填充到同一个GridView控件,简化了界面设计,程序更为灵活。可以分部门和分餐名统计总量,也可统计每个部门每一种餐的订餐量。
1.通过网页传递参数,使汇总界面可以统计当前表和历史表,并对当前表“完结”操作。
C#语句:
//审批页面调出“汇总”页面
protected void btSum_Click(object sender, EventArgs e)
{ string strTab;
if (this.rdlTab.SelectedValue == "DAY")
strTab = "dinner_choice";
else
strTab = "dinner_choice_bak";
Response.Redirect("summary.aspx?strTab="+ strTab); //将表名作为参数传递给汇总页面
}
//汇总页面启动
protected void Page_Load(object sender, EventArgs e)
{
if (Session["userID"] == null) //若session过期,则返回登录页面
Response.Redirect("logon.aspx");
if (Request.QueryString["strTab"]=="dinner_choice_bak") //获得网页传递的表名参数
btOver.Enabled =false; //如果是查询历史记录,“完结”功能被屏蔽
Response.Write("<font size=4 color='red'><b>您好!<B><font size=5 color='Green'>" + Session["userNam"] + "</font><font size=4 color='red'> 所属部门:" + Session["deptNam"] + "。</font>");
if (!this.IsPostBack) //若页面首次开启,为“完结”按钮加入确认提示
{ BindQuery();
this.btOver.Attributes.Add("onclick", "javascript: return confirm('确定要清空所有记录,并将“已确认”保存为历史记录吗?此操作不能恢复,请慎重!!!');");
}
}
2.通过“完结”操作,将所有“已确认”记录移入到历史表——dinner_choice_bak表保存备查,并清空当前表——dinner_choice。
C#语句:
//页面首次打开,为“完结”按钮加入确认提示
if (!this.IsPostBack)
{
this.btOver.Attributes.Add("onclick", "javascript: return confirm('确定要清空所有记录,并将“已确认”保存为历史记录吗?此操作不能恢复,请慎重!!!');");
}
protected void DataBak() //数据备份过程
{
OleDbConnection Conn = new OleDbConnection(connStr); //连接数据库
Conn.Open();
string strSql = "insert into dinner_choice_bak select * from dinner_choice where dinner_status='01'";
OleDbCommand cmd = new OleDbCommand(strSql, Conn); //转移所有“已确认”记录
cmd.ExecuteNonQuery();
strSql = "delete from dinner_choice";
OleDbCommand cmd = new OleDbCommand(strSql, Conn); //清空当前表
cmd.ExecuteNonQuery();
Conn.Close();
}
五、结语 综上所述,ASP.NET2.0编程技术为我们提供了强大的数据处理能力和广阔的探索空间,还有很多的Web控件和网页访问技术需要深入学习和开发。
|