zoukankan      html  css  js  c++  java
  • 动态加载控件疑惑。。。。

    这是在页面的代码:1
    string IDX ="";
                        IDX 
    = Request.QueryString["IDX"];
                        c_EditItem 
    = (EditItem)Page.LoadControl("ProductBarcodeControls/EditItem.ascx");
                        
                            c_EditItem.PK_ID 
    = IDX;
                        
                        
    this.Web_contaner.Controls.Add(c_EditItem);
                        c_EditItem.setRunningType(ActionType.UpdatedBarcodeItem);

    这里是用户控件中runingType的代码 2
    public void setRunningType(string rtype)
            
    {
                
                
    switch(rtype)
                
    {
                    
                    case ActionType.UpdatedBarcodeItem:
                        SetLableToText();
                        code_txt.EditEnable 
    = false;
                        Action_pal.Visible 
    = true;
                        add_btn.Visible 
    = false;
                     
        this.BindList();
                        
    break;
                    
    case ActionType.ViewBarcodeItem:
                        Action_pal.Visible 
    = false;
                        
    this.BindList();
                        
    break;
                }

            }


    这里是梆定数据的代码 3
        DataRow Row =  this.myCode.getBarcodeByIDX(this.PK_ID);
                    code_txt.Text               
    =   Row[BarcodeData.Code_FIELD].ToString();
                    partNo_txt.Text                
    =   Row[BarcodeData.PartNo_FIELD].ToString();
                    UpdatePartNO_txt.Text        
    =   Row[BarcodeData.NewPartNo_FIELD].ToString();
                    StandardPartNO_txt.Text        
    =   Row[BarcodeData.StandPartNO_FIELD].ToString();
                    Customer_txt.Text            
    =   Row[BarcodeData.Customer_FIELD].ToString();
                    status_rdb.SelectedValue    
    =   Row[BarcodeData.Status_FIELD].ToString().Trim().ToLower();
                    remark_txt.Text                
    =   Row[BarcodeData.Remark_FIELD].ToString();

                    LabelType_txt.Text            
    =   Row[BarcodeData.LabelType_FIELD].ToString();
                    LableDescritiop_txt.Text    
    =   Row[BarcodeData.LabelDescription_FIELD].ToString();
                    Description_txt.Text        
    =   Row[BarcodeData.Description_FIELD].ToString();
                    UpdateDesc_txt.Text            
    =   Row[BarcodeData.NewDescription_FIELD].ToString();

    这里是按下update后更新的代码 4
    DataRow Row =  this.myCode.getBarcodeByIDX(this.PK_ID);
                    Row[BarcodeData.PartNo_FIELD]        
    =    partNo_txt.Text.Trim();        
                    Row[BarcodeData.NewPartNo_FIELD]    
    =    UpdatePartNO_txt.Text.Trim();
                    Row[BarcodeData.StandPartNO_FIELD]    
    =    StandardPartNO_txt.Text.Trim();
                    Row[BarcodeData.Customer_FIELD]        
    =    Customer_txt.Text.Trim();
                    Row[BarcodeData.Status_FIELD]        
    =    status_rdb.SelectedValue;
                    Row[BarcodeData.Remark_FIELD]        
    =    remark_txt.Text.Trim();

                    Row[BarcodeData.LabelType_FIELD]    
    =    LabelType_txt.Text.Trim();
                    Row[BarcodeData.LabelDescription_FIELD] 
    = LableDescritiop_txt.Text.Trim();
                    Row[BarcodeData.Description_FIELD]    
    =    Description_txt.Text.Trim();
                    Row[BarcodeData.NewDescription_FIELD] 
    = UpdateDesc_txt.Text.Trim();

                    Row[BarcodeData.LastModify_FIELD]    
    = System.DateTime.Now;

                    Row.AcceptChanges();

    我点击update按钮更新数据的顺序通过跟踪是
    1-2-3-4
    这里有个逻辑错误:
    即 第3步不该执行。
    按照我的想法,
    数据不会被更新,因为在3步的时候重新绑定了数据。
    可是结果相反,数据得到更新。
    正常的逻辑应该是
    1-2-4

    虽然我不知道微软怎么样处理的,我按照正确的逻辑重写了2步
    case ActionType.UpdatedBarcodeItem:
                        SetLableToText();
                        code_txt.EditEnable 
    = false;
                        Action_pal.Visible 
    = true;
                        add_btn.Visible 
    = false;
                        
    if(!IsPostBack)
                            
    this.BindList();
                        
    break;
    表示在post时候,不在page load的时候重新绑定数据
  • 相关阅读:
    Dos常用命令收集
    build.xml
    ActionScript. 3.0著名开源库 大集合
    知识:ASP.NET ViewState
    分享:JavaScript表格排序控制
    分享:ViewState压缩方法
    分享:获取Castle.ActiveRecord中的Nhibernate Session
    分享:ASP.NET避免VIEWSTATE过大
    分享:扩展Include关联查询
    积累:收集常用sql
  • 原文地址:https://www.cnblogs.com/king_astar/p/91736.html
Copyright © 2011-2022 走看看