二、用户订餐
通过新型的Web控件RadioButtonList和DropDownList绑定数据,进行选餐操作,可以显示对应的菜品图片。应用新型的GridView控件实时显示已订餐信息,并在其内部嵌入了删除功能。利用AJAX技术的ScriptManager和UpdatePanel,实现无闪局部刷新,使用GridView显示订餐数据时,不必整个网页提交刷新,进而可以使用Timer定时控件实现自动刷新记录。
1.应用新型的RadioButtonList、DropDownList数据控件和RequiredFieldValidator、RangeValidator验证控件实现选餐操作。
HTML语言:定义上述三种Web控件。
<asp:RadioButtonList ID="rdlDinnerClass" runat="server" DataSourceID="AccessDataSource1"
DataTextField="class_rmk" DataValueField="dinner_class" RepeatDirection="Horizontal" Width="166px" AutoPostBack="True" Font-Size="Medium" OnSelectedIndexChanged="rdlDinnerClass_SelectedIndexChanged" >
</asp:RadioButtonList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="rdlDinnerClass"
ErrorMessage="民族不能为空"></asp:RequiredFieldValidator>
<asp:DropDownList ID="ddlDinnerId" runat="server" Font-Size="Medium" Width="166px" AutoPostBack="True" OnSelectedIndexChanged="ddlDinnerId_SelectedIndexChanged" >
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="ddlDinnerId"
ErrorMessage="菜名不能为空"></asp:RequiredFieldValidator>
<asp:TextBox ID="txtDinnerCnt" runat="server" Width="66px" Font-Size="Medium"></asp:TextBox>
<asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="txtDinnerCnt" ErrorMessage="请输入合法数值" MaximumValue="99"MinimumValue="1"SetFocusOnError="True" Type="Integer"Width="113px">
</asp:RangeValidator>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtDinnerCnt" ErrorMessage="数量不能为空" Width="120px" SetFocusOnError="True"></asp:RequiredFieldValidator></td>
C#语句:
protected void rdlDinnerClass_SelectedIndexChanged(object sender, EventArgs e) //选定民族
{ string str1 = this.rdlDinnerClass.SelectedValue;
//连接数据库
OleDbConnection Conn = new OleDbConnection(connStr);
Conn.Open();
string strSql = "select * from dinner_info where dinner_class='" + str1 + "'";
//结果集 对象
OleDbDataAdapter rs = new OleDbDataAdapter(strSql, Conn);
//集合
DataSet ds = new DataSet();
//把rs给了ds
rs.Fill(ds);
//动态绑定dropdownlist控件
ddlDinnerId.DataSource = ds.Tables[0].DefaultView;
ddlDinnerId.DataTextField ="dinner_rmk";
ddlDinnerId.DataValueField = "dinner_id";
ddlDinnerId.DataBind();
Conn.Close();
//赋值给dinnerId控件
ddlDinnerId.SelectedIndex = 0;
string str2 = this.ddlDinnerId.SelectedValue;
//显示对应的图片
this.imgDinner.ImageUrl = "~/bmp/" + str1 + str2 + ".jpg";
}
protected void ddlDinnerId_SelectedIndexChanged(object sender, EventArgs e) //选定餐名
{ string str1 = this.rdlDinnerClass.SelectedValue;
string str2 = this.ddlDinnerId.SelectedValue;
//显示对应的图片
this.imgDinner.ImageUrl = "~/bmp/" + str1+str2 +".jpg";
}
2.应用GridView控件显示当前用户的所有订餐信息,控件嵌入了删除功能,并且,页脚能显示订餐的合计量。
HTML语言:定义GridView控件的数据列,加入了一列按钮“删除”,并提示用户确认执行。
<asp:GridView ID="gvChoice" runat="server" AutoGenerateColumns="False" OnRowCommand="gvChoice_RowCommand" OnRowDataBound="gvChoice_RowDataBound" CellPadding="4"
ForeColor="Black" GridLines="None" Width="549px" EmptyDataText="没有任何数据可以显示。" ShowFooter="True">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" />
<asp:BoundField DataField="dinner_rmk" HeaderText="餐名" />
<asp:BoundField DataField="dinner_cnt" HeaderText="数量" >
<ItemStyle HorizontalAlign="Right" />
</asp:BoundField>
<asp:BoundField DataField="class_rmk" HeaderText="民族" />
<asp:BoundField DataField="rec_tim" HeaderText="时间" DataFormatString="{0:yyyy-MM-dd HH:mm:ss}" HtmlEncode="False" />
<asp:BoundField DataField="dinner_status" HeaderText="状态" >
<ItemStyle Font-Bold="True" />
</asp:BoundField>
//删除确认提示功能
<asp:ButtonField CommandName="Del" HeaderText="功能" Text="<div id="de" onclick="JavaScript:return confirm('确定删除吗?')">删除</div> " />
<asp:BoundField DataField="dinner_memo" HeaderText="备注" />
</Columns>
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
C#语句:
protected void gvChoice_RowCommand(object sender, GridViewCommandEventArgs e) //内嵌的删除功能
{
//取得行的索引号
int idx = Convert.ToInt32(e.CommandArgument);
GridViewRow selectedRow = gvChoice.Rows[idx];
//取得该行的ID号
TableCell tbID = selectedRow.Cells[0];
switch (e.CommandName) //判断按钮功能
{
case "Del":
string strID = tbID.Text;
OleDbConnection Conn = new OleDbConnection(connStr);
Conn.Open();
string strSql = "delete from dinner_choice where dinner_status<>'01' and ID=" + strID;
OleDbCommand cmd = new OleDbCommand(strSql, Conn);
cmd.ExecuteNonQuery();
Conn.Close();
break;
}
}
int cntTotal = 0; //初始化累计值变量
protected void gvChoice_RowDataBound(object sender, GridViewRowEventArgs e)
{ //页脚的合计数
if (e.Row.RowType == DataControlRowType.DataRow) //累计订餐数量
{cntTotal = cntTotal + Convert.ToInt32(e.Row.Cells[2].Text);
}
else if (e.Row.RowType == DataControlRowType.Footer) //如果页脚,则显示
e.Row.Cells[2].Text = "Total: " + cntTotal.ToString();
//如果是绑定数据行,则行变色
if (e.Row.RowType == DataControlRowType.DataRow)
{ //鼠标经过时,行背景色变
e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#80FFFF'");
//鼠标移出时,行背景色恢复
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#FFFFFF'");
}
}
|