动态加载控件疑惑。。。。

博客展示了页面代码、用户控件代码、绑定数据代码及更新代码,指出点击update按钮更新数据顺序存在逻辑错误,原顺序1 - 2 - 3 - 4中第3步不该执行,按正常逻辑应是1 - 2 - 4,最后按正确逻辑重写了部分代码。
这是在页面的代码:1
None.gifstring IDX ="";
None.gif                    IDX 
= Request.QueryString["IDX"];
None.gif                    c_EditItem 
= (EditItem)Page.LoadControl("ProductBarcodeControls/EditItem.ascx");
None.gif                    
None.gif                        c_EditItem.PK_ID 
= IDX;
None.gif                    
None.gif                    
this.Web_contaner.Controls.Add(c_EditItem);
None.gif                    c_EditItem.setRunningType(ActionType.UpdatedBarcodeItem);

这里是用户控件中runingType的代码 2
None.gifpublic void setRunningType(string rtype)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif            
InBlock.gif            
switch(rtype)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
InBlock.gif                case ActionType.UpdatedBarcodeItem:
InBlock.gif                    SetLableToText();
InBlock.gif                    code_txt.EditEnable 
= false;
InBlock.gif                    Action_pal.Visible 
= true;
InBlock.gif                    add_btn.Visible 
= false;
InBlock.gif                 
    this.BindList();
InBlock.gif                    
break;
InBlock.gif                
case ActionType.ViewBarcodeItem:
InBlock.gif                    Action_pal.Visible 
= false;
InBlock.gif                    
this.BindList();
InBlock.gif                    
break;
ExpandedSubBlockEnd.gif            }

ExpandedBlockEnd.gif        }


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

这里是按下update后更新的代码 4
None.gifDataRow Row =  this.myCode.getBarcodeByIDX(this.PK_ID);
None.gif                Row[BarcodeData.PartNo_FIELD]        
=    partNo_txt.Text.Trim();        
None.gif                Row[BarcodeData.NewPartNo_FIELD]    
=    UpdatePartNO_txt.Text.Trim();
None.gif                Row[BarcodeData.StandPartNO_FIELD]    
=    StandardPartNO_txt.Text.Trim();
None.gif                Row[BarcodeData.Customer_FIELD]        
=    Customer_txt.Text.Trim();
None.gif                Row[BarcodeData.Status_FIELD]        
=    status_rdb.SelectedValue;
None.gif                Row[BarcodeData.Remark_FIELD]        
=    remark_txt.Text.Trim();
None.gif
None.gif                Row[BarcodeData.LabelType_FIELD]    
=    LabelType_txt.Text.Trim();
None.gif                Row[BarcodeData.LabelDescription_FIELD] 
= LableDescritiop_txt.Text.Trim();
None.gif                Row[BarcodeData.Description_FIELD]    
=    Description_txt.Text.Trim();
None.gif                Row[BarcodeData.NewDescription_FIELD] 
= UpdateDesc_txt.Text.Trim();
None.gif
None.gif                Row[BarcodeData.LastModify_FIELD]    
= System.DateTime.Now;
None.gif
None.gif                Row.AcceptChanges();

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

虽然我不知道微软怎么样处理的,我按照正确的逻辑重写了2步
None.gifcase ActionType.UpdatedBarcodeItem:
None.gif                    SetLableToText();
None.gif                    code_txt.EditEnable 
= false;
None.gif                    Action_pal.Visible 
= true;
None.gif                    add_btn.Visible 
= false;
None.gif                    
if(!IsPostBack)
None.gif                        
this.BindList();
None.gif                    
break;
表示在post时候,不在page load的时候重新绑定数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值