前臺
總價錢:<asp:Label ID="lblsum" runat="server" Text="" CssClass="lab" Visible="false"></asp:Label>
<asp:LinkButton ID="lbtDetail" runat="server" CommandName="Detail"
onclick="lbtDetail_Click"><span style="text-decoration:underline; color:#f74322; font-size:14px;">點擊詳情</span></asp:LinkButton>
<asp:DataGrid ID="dgList" runat="server" AutoGenerateColumns="true" AllowPaging="True"
HorizontalAlign="Center" ShowFooter="True" BackColor="White"
BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3"
ForeColor="Black" GridLines="Vertical" Height="79px" Width="270px" Visible="false">
<FooterStyle BackColor="#CCCCCC" />
<SelectedItemStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<AlternatingItemStyle BackColor="#CCCCCC" />
<Columns>
</Columns>
<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
</asp:DataGrid>
<asp:Button ID="btnOK" runat="server" Text="確定" onclick="btnOK_Click" CssClass="btn" Visible="false"/>
protected void lbtDetail_Click(object sender, EventArgs e)
{
this.dgList.Visible = true;//將點餐的datagrid顯示
this.btnOK.Visible = true;//出現確定的按鈕
this.lblsum.Visible = true;//將本單總價錢顯示出來
//判斷是否選擇商品
try
{
//選擇商品
int num = 0;
//循環判斷Datalist
for (int i = 0; i < this.list.Items.Count; i++)
{
if ((this.list.Items[i].Controls[1] as CheckBox).Checked == true)
{
num = num + 1;
}
}
if (num == 0)
{
MessageBox.Show(this, "請選擇商品!");
return;
}
//創建臨時表
DataTable dtFoodSelect = new DataTable();
//創建表中列名,注意存入的類型
dtFoodSelect.Columns.Add("編號", Type.GetType("System.Int32"));
dtFoodSelect.Columns.Add("名稱", Type.GetType("System.String"));
dtFoodSelect.Columns.Add("單價", Type.GetType("System.String"));
dtFoodSelect.Columns.Add("份數", Type.GetType("System.Int32"));
double sum = 0;//此單總價
//循環遍歷datalist
foreach(DataListItem item in list.Items)
{
CheckBox ckBox = (CheckBox)item.FindControl("check");//獲取datalist中的控件id
if(ckBox.Checked==true)
{
HiddenField hideID = (HiddenField)item.FindControl("giftID");//Datalist隱藏的,用於每個商品的id
int id = int.Parse(hideID.Value);//轉化爲int類型
//獲取表中狀態是上架的並且是複選框選中的商品
DataSet ds = new DataSetDA().selectData("select * from gift where state=1 and giftID='" + id + "'");
//DataRow是用來表示一個數據表的的數據行
DataRow newRow;
newRow = dtFoodSelect.NewRow();
//給臨時表各個列的行賦相應的值
newRow["編號"] = ds.Tables[0].Rows[0]["giftID"].ToString();
newRow["名稱"] = ds.Tables[0].Rows[0]["giftName"].ToString();
newRow["單價"] = ds.Tables[0].Rows[0]["giftPrice"].ToString();
TextBox tb = (TextBox)item.FindControl("number");//獲取datalist中textbox份數的值
newRow["份數"] = tb.Text;
dtFoodSelect.Rows.Add(newRow);//將這些值加入到臨時表中,這句話很關鍵
sum += Convert.ToSingle(ds.Tables[0].Rows[0]["giftPrice"]) * Convert.ToInt32(tb.Text);//將所有選中的單種商品的單價*份數累加起來
}
}
dgList.DataSource = dtFoodSelect;//Datagrid的數值來源臨時表
dgList.DataBind();//綁定
lblsum.Text = sum.ToString()+"元";//datalist全部循環結束,顯示此單的總價
}
catch(Exception ex)
{
MessageBox.Show(this, "選擇失敗!"+ex.Message.ToString());
}
}
protected void btnOK_Click(object sender, EventArgs e)
{
//當此單提交後,臨時表和對應的總價消失
this.dgList.Visible = false;
this.btnOK.Visible = false;
this.lblsum.Visible = false;
//也可以根據需要將剛纔的消費單寫進數據庫
}