【问题标题】:Cannot be negative and avoid letter inputs on textbox [duplicate]不能为负数并避免在文本框中输入字母[重复]
【发布时间】:2016-08-13 04:00:22
【问题描述】:

这是我的 txtProductQuantity_TextChange 的全部代码:

protected void txtProductQuantity_TextChanged(object sender, EventArgs e)
    {
        TextBox txtQuantity = (sender as TextBox);

        //int tempForTryParse = 0;
        //if (!int.TryParse(txtQuantity.Text, out tempForTryParse))
        //{
        //    txtQuantity.Text = txtQuantity.Text.Substring(0, txtQuantity.Text.Length - 1);
        //}

        DataListItem currentItem = (sender as TextBox).NamingContainer as DataListItem; // getting current item on where user wants to add or remove
        HiddenField ProductID = currentItem.FindControl("hfProductID") as HiddenField;
        Label lblAvailableStock = currentItem.FindControl("lblAvailableStock") as Label;

        int tempInt = 0;
        if (txtQuantity.Text == string.Empty || txtQuantity.Text == "0" || txtQuantity.Text == "1" || double.Parse(txtQuantity.Text) < 0 || !int.TryParse(txtQuantity.Text, out tempInt))
        {
            txtQuantity.Text = "1"; //default value is 1, no action 
        }
        else
        {
            if (Session["MyCart"] != null) // not null means user has added a product in the shopping cart
            {
                if (Convert.ToInt32(txtQuantity.Text) <= Convert.ToInt32(lblAvailableStock.Text)) // check if quantity is greater than available stock
                {
                    DataTable dt = (DataTable)Session["MyCart"]; // if quantity is less than the available stock, go inside the code

                    DataRow[] rows = dt.Select("ProductID = '" + ProductID.Value + "'"); // select specific row depending on the product id

                    int index = dt.Rows.IndexOf(rows[0]);

                    dt.Rows[index]["ProductQuantity"] = txtQuantity.Text; // putting the value in the txtQuantityTextbox. changing the product quantity in the data table

                    Session["MyCart"] = dt; // add updated value to datatable
                }
                else // error if quntity is greater than available stock
                {
                    lblAvailableStockAlert.Text = " Alert: product buyout should not be more than the available stock!";
                    txtQuantity.Text = "1"; // automatically change the quantity back to 1.
                }

            }
        }
        UpdateTotalBill();
    }

我想要做的是避免字母成为用户的输入。或者类似的东西会被默认为“1”。

【问题讨论】:

    标签: c# asp.net negative-number product-quantity


    【解决方案1】:

    使用 if 语句检查

    if(txtQuantity.Text.StartsWith("-")
    {
        //Code if negative
    }
    

    您也可以将字符串解析为数字,然后检查它是否为负数

    if(int.Parse(txtQuantity.Text) < 0)
    {
        //Code if negative
    }
    

    因此,在您的代码上下文中,您可以像这样使用它

    if (txtQuantity.Text == string.Empty || txtQuantity.Text == "0" || txtQuantity.Text == "1" || txtQuantity.Text.StartsWith("-"))
       {
            txtQuantity.Text = "1"; //default value is 1, no action 
       }
    

    if (txtQuantity.Text == string.Empty || txtQuantity.Text == "0" || txtQuantity.Text == "1" || int.Parse(txtQuantity.Text) < 0)
       {
            txtQuantity.Text = "1"; //default value is 1, no action 
       }
    

    为避免在字段中输入文本,在 textBox 的 Text Changed 事件中,您应该在此 i​​f 语句中添加另一个条件,以及作为输出的整数变量

    int tempInt = 0;
    bool parsed = int.TryParse(txtQuantity.Text, out tempInt);
    if (txtQuantity.Text == string.Empty || txtQuantity.Text == "0" || txtQuantity.Text == "1" || tempInt < 0 || !parsed)
       {
            txtQuantity.Text = "1"; //default value is 1, no action 
       }
    

    【讨论】:

    • 谢谢伙计。关于如何避免在上面输入字母的任何想法?因为当我这样做时它会给我一个错误。
    • @PaoloDuhaylungsod 针对这种情况进行了编辑
    • 我已经展示了我的整个代码。或者如果他们输入一个字母,它会被默认为 1 的值吗?谢谢
    • @PaoloDuhaylungsod 在这种情况下,就在您将发件人设置为 txtQuantity 之后,您可以进行验证,如果有一封信,您可以返回以便什么也不会发生,或者让它继续运行
    • @PaoloDuhaylungsod 试试更新的代码
    【解决方案2】:

    设法解决它。我添加了

    int.Parse(txtQuantity.Text)<1)
    

    到我的代码的第一行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-04
      • 2011-03-06
      • 2015-04-25
      • 2017-03-04
      • 2020-11-09
      • 1970-01-01
      • 2021-09-06
      • 2016-09-12
      相关资源
      最近更新 更多