首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

postback 数据库更新了 但是页面没有更新解决方案

2012-01-03 
postback 数据库更新了 但是页面没有更新postback数据库更新了但是页面没有更新必须点第二次才能看到上次

postback 数据库更新了 但是页面没有更新
postback   数据库更新了   但是页面没有更新     必须点第二次才能看到上次页面的更新结果     使用了UpdatePanel和不使用都这样   我想要的是点了按钮事件   只点一下   数据库也更新   页面上的数据也立即更新   这里说下   我使用了存储过程   在网上看到貌似直接写SQL不存在这样的问题(没试过)   但是小弟存储过程和业务逻辑都写完了   不想改回来   所以在这里跪求原因以及解决方案   谢谢啊!


public   partial   class   barket   :   System.Web.UI.UserControl
{
        private   string   username= " ";
        private   int   ishandled=0;
        public   string   UserName   {get{return   username;}set{username=value;}}
        public   int   isHandled   {   get   {   return   ishandled;   }   set   {   ishandled   =   value;   }   }
        protected   void   Page_Load(object   sender,   EventArgs   e)
        {
                init_barket();
        }
        protected   void   lb_jszx_Click(object   sender,   EventArgs   e)
        {
                Response.Redirect( "jszx.aspx ");
        }

        protected   void   lb_delAll_Click(object   sender,   EventArgs   e)
        {
                Order   myOrder   =   new   Order();
                List <OrderInfo>   myOrderInfoList   =   myOrder.GetOrdersByUser(UserName,   isHandled);
                foreach   (OrderInfo   myOrderInfo   in   myOrderInfoList)
                {
                        myOrder.DeleteOrder(myOrderInfo.OrderID);
                }
        }

        protected   void   lb_modify_Click(object   sender,   EventArgs   e)
        {
                Order   myOrder   =   new   Order();
                List <OrderInfo>   myOrderInfoList   =   myOrder.GetOrdersByUser(UserName,   isHandled);

                foreach   (OrderInfo   myOrderInfo   in   myOrderInfoList)
                {
                        TextBox   tb   =   (TextBox)FindControl( "c "   +   myOrderInfo.OrderID.ToString());
                        myOrderInfo.ProductCounts   =   int.Parse(tb.Text);
                        myOrder.UpdateOrder(myOrderInfo);
                }
                //Response.Write( " <script> document.location.href=document.location.href </script> ");


        }

        void   ib_delOrder_Click(object   sender,   ImageClickEventArgs   e)
        {
                ImageButton   ib_delOrder   =   (ImageButton)sender;
                Order   myOrder   =   new   Order();
                myOrder.DeleteOrder(int.Parse(ib_delOrder.UniqueID));
        }

        public   void   init_barket()
        {
                barketTable.Controls.Clear();
                Order   myOrder   =   new   Order();
                List <OrderInfo>   myOrderInfoList   =   myOrder.GetOrdersByUser(UserName,   isHandled);
                float   Amount   =   0;
                int   Counts   =   0;

                TableRow   tr_title   =   new   TableRow();
                TableCell   tc_spmc   =   new   TableCell();
                tc_spmc.Controls.Add(new   LiteralControl( "商品名称 "));
                tr_title.Cells.Add(tc_spmc);
                TableCell   tc_dj   =   new   TableCell();
                tc_dj.Controls.Add(new   LiteralControl( "单价 "));
                tr_title.Cells.Add(tc_dj);
                TableCell   tc_sl   =   new   TableCell();
                tc_sl.Controls.Add(new   LiteralControl( "数量 "));
                tr_title.Cells.Add(tc_sl);
                TableCell   tc_zj   =   new   TableCell();
                tc_zj.Controls.Add(new   LiteralControl( "总价 "));
                tr_title.Cells.Add(tc_zj);
                TableCell   tc_sc   =   new   TableCell();
                tc_sc.Controls.Add(new   LiteralControl( "删除 "));
                tr_title.Cells.Add(tc_sc);
                barketTable.Rows.Add(tr_title);

                foreach   (OrderInfo   myOrderInfo   in   myOrderInfoList)
                {
                        TableRow   tr   =   new   TableRow();
                        //商品名称
                        TableCell   tc_pName   =   new   TableCell();


                        tc_pName.Controls.Add(new   LiteralControl(myOrderInfo.ProductName));
                        tr.Cells.Add(tc_pName);

                        //单价
                        TableCell   tc_Price   =   new   TableCell();
                        tc_Price.Controls.Add(new   LiteralControl(myOrderInfo.Price.ToString()   +   "元 "));
                        tr.Cells.Add(tc_Price);

                        //数量
                        TableCell   tc_Counts   =   new   TableCell();
                        TextBox   tb_Counts   =   new   TextBox();
                        tb_Counts.ID   =   "c "   +   myOrderInfo.OrderID.ToString();
                        tb_Counts.BorderStyle   =   BorderStyle.Dotted;
                        tb_Counts.BorderWidth   =   1;
                        tb_Counts.Font.Size   =   9;
                        tb_Counts.Text   =   myOrderInfo.ProductCounts.ToString();
                        tb_Counts.Width   =   20;
                        tb_Counts.Height   =   13;
                        tc_Counts.Controls.Add(tb_Counts);
                        tr.Cells.Add(tc_Counts);

                        //总价
                        TableCell   tc_Amounts   =   new   TableCell();
                        float   cp_amount   =   myOrderInfo.ProductCounts   *   myOrderInfo.Price;
                        tc_Amounts.Controls.Add(new   LiteralControl(cp_amount.ToString()   +   "元 "));
                        tr.Cells.Add(tc_Amounts);

                        //删除
                        TableCell   tc_delOrder   =   new   TableCell();
                        ImageButton   ib_delOrder   =   new   ImageButton();
                        ib_delOrder.ID   =   myOrderInfo.OrderID.ToString();


                        ib_delOrder.ImageUrl   =   "Images/trash.gif ";
                        ib_delOrder.BorderWidth   =   0;
                        ib_delOrder.ImageAlign   =   ImageAlign.AbsMiddle;
                        ib_delOrder.Click   +=   new   ImageClickEventHandler(ib_delOrder_Click);
                        tc_delOrder.Controls.Add(ib_delOrder);
                        tr.Cells.Add(tc_delOrder);
                        barketTable.Rows.Add(tr);

                        //总的价格和数量
                        Amount   +=   cp_amount;
                        Counts   +=   myOrderInfo.ProductCounts;
                }

                //状态信息栏
                TableRow   tr_total   =   new   TableRow();
                TableCell   tc_total   =   new   TableCell();
                tc_total.ColumnSpan   =   5;
                tc_total.Controls.Add(new   LiteralControl( "购物车里有商品: "   +   myOrderInfoList.Count.ToString()   +   "件     总数: "   +   Counts.ToString()   +   "件     共计: "   +   Amount.ToString()   +   "元 "));
                tr_total.Cells.Add(tc_total);
                barketTable.Rows.Add(tr_total);


        }


}

[解决办法]
需要重新绑定吧
[解决办法]
页面没更新的问题可以通过重新对该控件进行数据绑定来解决
[解决办法]
if(!IsPostBack)
{
init_barket();
}
还需要对数据进行重新绑定!
[解决办法]
重新DataBind();
[解决办法]
重新把数据取出来进行数据绑定
[解决办法]
原来怎么绑定的,就再重复一次。
[解决办法]
重新绑定
[解决办法]
if(!IsPostBack)
{
init_barket();
}

[解决办法]
重新绑定
[解决办法]
需要修改的有两点
1 protected void Page_Load(object sender, EventArgs e)


{
if(!this.ispostback)
{
init_barket();
}
}
2 要在每次更新数据的按钮后添加 init_barket();
比如
protected void lb_delAll_Click(object sender, EventArgs e)
{
Order myOrder = new Order();
List <OrderInfo> myOrderInfoList = myOrder.GetOrdersByUser(UserName, isHandled);
foreach (OrderInfo myOrderInfo in myOrderInfoList)
{
myOrder.DeleteOrder(myOrderInfo.OrderID);
}
init_barket();
}

热点排行