代码之家  ›  专栏  ›  技术社区  ›  user1352057

模式弹出扩展程序丢失ID

  •  0
  • user1352057  · 技术社区  · 13 年前

    编辑:

    添加了onload方法:

    protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["usersName"] != null)
            {
    
                object a = Session["_id"];
    
                IDMaster = Convert.ToInt32(a);
    
                GridView1.Columns[10].Visible = true;
                GridView1.Columns[11].Visible = true;
    
    
            }
    

    我正在使用模式弹出扩展程序来警告我的客户,特定商品的商品数量超过了一定数量。

    我在这个扩展程序中有两个按钮,允许用户确认他们希望在新股票到达或不到达时向他们发送电子邮件。

    “yes”按钮的触发器非常有效,但当我将行ID发送到用于存储电子邮件详细信息的类的构造函数时,它总是设置为0,即使变量是全局的。

    以下是我的代码,用于进一步解释此问题:

    在我的模式中添加商品到购物车的按钮:

    protected void LinkButton1_Click(object sender, EventArgs e)   
        {
    
    
            GridViewRow row = ((Button)sender).Parent.Parent as GridViewRow;
            TextBox t = (TextBox)row.FindControl("txtQuan");
    
            *********Gain the item row ID (this is what needs to be passed*******
            object ID = GridView1.DataKeys[row.RowIndex].Value;
    
            *********This ID should be passed but is setting to 0************
            rowID = Convert.ToInt32(ID);
    
            string qty = t.Text;
    
            int stockToAdd = Convert.ToInt32(qty);
    
            DBHandler add = new DBHandler(rowID);
    
            int qtyCheck = add.getStockQty();
    
            if (stockToAdd > qtyCheck)
            {
    
                Button2_ModalPopupExtender.Show();
    
            }
    
            else{
    
    
                SqlConnection con;
                con = add.openDB();
    
                con.Open();
    
                DBHandler idCheck = new DBHandler(rowID);
                int rows = idCheck.checkCartRows();
    
                if (rows > 0)
                {
    
                   int qtyNow = idCheck.getCartQty();
    
                    int updateStock = qtyNow + stockToAdd;
    
                    idCheck.updateQty(rowID, updateStock);
                    updatePanel();
    
                }
    
                else
                {
    
                    idCheck.insertCart(qty);
                    updatePanel();
    
                }
                add.close();
    
            }
    
    
            }
    

    下面的代码显示了我的confirmonclick按钮方法。请注意在单击“添加到购物车”按钮时存储在上述方法中的ID“rowID”。此rowID设置为0,而不是保留rowID值。

     protected void btnOK_Click(object sender, EventArgs e)
        {
           ***** rowID is setting to 0*******
            DBoutOfStockEmail insertNewEmailDetail = new DBoutOfStockEmail(IDMaster, rowID);
    
            DBMembershipHandler getEmail = new DBMembershipHandler(IDMaster);
    
            string emailToSend = getEmail.emailOfMember();
    
            insertNewEmailDetail.insertDetails(emailToSend);
    
        }
    

    总结这个问题:当我用模态弹出扩展程序单击yes按钮时,为什么rowID变量设置为“0”?

    1 回复  |  直到 13 年前
        1
  •  0
  •   MethodMan    13 年前

    根据我最初的评论,我将把这个作为答案发布

    这可能来自几个方面。。您是否正在检查或执行IsPostBack检查,是否持有会话变量中的值。。?ViewState是启用还是禁用。。?你能显示页面加载事件的样子吗