订餐系统对食物的维护

来源:互联网 发布:拥抱美好未来软件 编辑:程序博客网 时间:2024/04/28 14:05

    现在的页面是这个样子的:



       



    借用了永和收银系统的后台代码,实现了本页面的增删改,食物不多,索性去除了"查"


    页面实现了上下下拉框的联动,上面是何种菜系,下面就是哪个



       



     当点击编辑和删除时,效果图如下



       




       



    页面核心代码:


    gridview控件:



        <asp:GridView ID="gvFood" class="gv" runat="server" AutoGenerateColumns="False" OnRowEditing="gvFood_Editing"            OnRowUpdating="gvFood_Updating" OnRowDeleting="gvFood_Deleting" OnRowCancelingEdit="gvFood_CancelingEdit"            DataKeyNames="foodId" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None"            BorderWidth="1px" CellPadding="3" AllowPaging="True" OnPageIndexChanging="gvFood_PageIndexChanging"            OnSelectedIndexChanged="gvFood_SelectedIndexChanged" HorizontalAlign="Center"            EmptyDataText="您好,没有您要查找的记录.">            <FooterStyle BackColor="White" ForeColor="#000066" />            <RowStyle ForeColor="#000066" HorizontalAlign="Center" />            <PagerStyle HorizontalAlign="Center" />            <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" HorizontalAlign="Center" />            <AlternatingRowStyle BackColor="#F7F7F7" />            <Columns>                <asp:TemplateField HeaderText="食物ID">                    <ItemTemplate>                        <asp:Label ID="Label1" runat="server" Text='<%#Bind("foodid") %>'></asp:Label>                    </ItemTemplate>                </asp:TemplateField>                <asp:TemplateField HeaderText="食物名称">                    <EditItemTemplate>                        <asp:TextBox ID="txtFoodName" MaxLength="8" runat="server" Text='<%#Bind("foodName") %>' Width="120px"></asp:TextBox>                    </EditItemTemplate>                    <ItemTemplate>                        <asp:Label ID="Label2" runat="server" Text='<%#Bind("foodName") %>'></asp:Label>                    </ItemTemplate>                </asp:TemplateField>                <asp:TemplateField HeaderText="食物价格">                    <EditItemTemplate>                        <asp:TextBox ID="txtPrice" runat="server" Text='<%#Bind("price") %>' Width="90px"                            onkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;        else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value"                            onkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;        if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value"                            onblur="if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))this.value=this.o_value;        else{if(this.value.match(/^\.\d+$/))this.value=0+this.value;if(this.value.match(/^\.$/))this.value=0;this.o_value=this.value}"></asp:TextBox>                    </EditItemTemplate>                    <ItemTemplate>                        <asp:Label ID="Label3" runat="server" Text='<%#Bind("price") %>'></asp:Label>                    </ItemTemplate>                </asp:TemplateField>                <asp:TemplateField HeaderText="所属菜系">                    <ItemTemplate>                        <asp:Label ID="Label4" runat="server" Text='<%#Bind("foodTypeName") %>'></asp:Label>                    </ItemTemplate>                </asp:TemplateField>                <asp:TemplateField HeaderText="编辑" ShowHeader="False">                    <EditItemTemplate>                        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update"                            Text="更新"></asp:LinkButton>                         <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel"                            Text="取消"></asp:LinkButton>                    </EditItemTemplate>                    <ItemTemplate>                        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit"                            Text="编辑"></asp:LinkButton>                    </ItemTemplate>                </asp:TemplateField>                <asp:TemplateField HeaderText="删除" ShowHeader="False">                    <ItemTemplate>                        <asp:LinkButton ID="lbtnDelete" runat="server" CausesValidation="True" CommandName="Delete"                            Text="删除" OnClientClick="return confirm('确定要删除吗?')"></asp:LinkButton>                    </ItemTemplate>                </asp:TemplateField>            </Columns>        </asp:GridView>



    编辑菜名和价格代码:


        //编辑GridView,进入编辑状态        protected void gvFood_Editing(object sender, GridViewEditEventArgs e)        {            gvFood.EditIndex = e.NewEditIndex;            BindFoodOnlyFoodTypeId();        }


        //取消编辑        protected void gvFood_CancelingEdit(object sender, GridViewCancelEditEventArgs e)        {            gvFood.EditIndex = -1;            BindFoodOnlyFoodTypeId();        }



        protected void gvFood_Updating(object sender, GridViewUpdateEventArgs e)        {            TxtFoodName.Text = "";            TxtPrice.Text = "";            Entity.Food m_Food = new Food();            //食物ID,两次赋值,等号右边是一个东西            m_Food.foodId = Convert.ToInt32(gvFood.DataKeys[e.RowIndex].Value.ToString().Trim());            int foodId = Convert.ToInt32(gvFood.DataKeys[e.RowIndex].Value.ToString().Trim());            //新食物名            m_Food.foodName = ((TextBox)gvFood.Rows[e.RowIndex].Cells[0].FindControl("txtFoodName")).Text.ToString();            //通过食物Id来查找对应的食物名称,如果更新时更新的是名称则对名称进行判断            //如果不是改的名称,则进行更新            DataTable FindDt = new DataTable();            //SelectFoodByFoodId SFoodByid = new SelectFoodByFoodId();            FindDt = mmbao.QueryFoodByFoodId(foodId);            //旧食物名            string FoodName = FindDt.Rows[0][1].ToString();                    int FoodTypeId = Convert.ToInt32(FindDt.Rows[0][4].ToString());            //string FoodTypeId = FindDt.Rows[0]["foodTypeId"].ToString();            //判断名称是否改变了            if (m_Food.foodName != FoodName)            {                //菜名改变了就继续判断--                //判断食物名称是否存在                //Bll.IsExistFoodName m_IsExist = new Bll.IsExistFoodName();                //bool Flag = m_IsExist.IsExistFoodName(m_Food.foodName);                bool Flag = mmbao.IsExistsThisFood(m_Food.foodName,FoodTypeId);                if (Flag == true)                {                    Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('食物类型名称重复,请修改!');</script>");                    return;                }            }            if (m_Food.foodName.Trim() == "")            {                Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('菜名不允许为空!');</script>");                return;            }            string newPrice = ((TextBox)gvFood.Rows[e.RowIndex].Cells[0].FindControl("txtPrice")).Text.ToString();            if (newPrice == "")            {                Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('菜价格不允许为空!');</script>");                return;            }            //新食物名            string newfoodName = ((TextBox)gvFood.Rows[e.RowIndex].Cells[0].FindControl("txtFoodName")).Text.ToString();            //新价格            decimal afterPrice = Convert.ToDecimal(newPrice);            Food updatefood = new Food();            updatefood.foodName = newfoodName;            updatefood.price = afterPrice;            updatefood.foodId = foodId;            bool flag = mmbao.updateFood(updatefood);            if (true)            {                Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('修改成功!');</script>");            }            else            {                Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('修改失败,请联系管理员');</script>");                return;            }            //更新完毕,取消更新            gvFood.EditIndex = -1;            BindFoodOnlyFoodTypeId();        }



    代码编写理念是三层的数据传递,加上了一些BS编程的特点,并不难搞,因为有永和的支持,看永和的代码,填补了我初期学BS的空白,多学习,多进步



1 0