在ASP.NET C#中,按钮单击事件中的文本框值不会更改

萨德·苏里(Saad Suri)

我遇到了一个问题,我无法获得任何控件的值,而不仅仅是按钮单击事件中的文本框,所以这里是这种情况,您可以跳过它,只可以查看我的按钮单击事件

页面产品正在执行2个操作

  • 创建
  • 更新

当用户点击编辑在updpage上的GridView将其重定向到产品页面更新,同一页面进行创建的时候,我不会让我的产品的操作也是如此,所以当我收到查询字符串值,我会更新产品表,只是执行创建操作。


现在,当没有QueryString值时,我会陷入困境,因此文本框将使用新值进行更新,但是当有新值时,它们将不会为我提供新值。

这是我的代码

在pageLoad事件上,我在文本框中填充了具有更新操作的各个值

protected void Page_Load(object sender, EventArgs e)
{

    if (Request.QueryString["update"] !=null)
    {
        if (!Page.IsPostBack)
        {
            bindcategories();
            bindachievments();
            bindbrands();
        }
        int id = int.Parse(Request.QueryString["update"]);
        string query = "SELECT * FROM ProductView WHERE id = " + id.ToString();
        DataTable dtupd = new DataTable();
        dtupd = param.All_data(query);

        string name = "",available="",category="",brand="",achievement="",image="";
        decimal price=0;
        int unit = 0;

        foreach (DataRow row in dtupd.Rows)
        {
             name = row.Field<string>("product_name");
             price = row.Field<decimal>("price");
             unit = row.Field<int>("unit");
             image = row.Field<string>("product_image");
             available = row.Field<string>("available");
             category = row.Field<string>("category_name");
             brand = row.Field<string>("brand_name");
             achievement = row.Field<string>("achievement");
        }
        txt_name.Text = name;
        txt_price.Text = price.ToString();
        txt_unit.Text = unit.ToString();
        product_image.ImageUrl = "../" + image;

        dd_available.ClearSelection();
        dd_available.SelectedValue = available;

        dd_category.ClearSelection();
        dd_category.Items.FindByText(category).Selected = true;

        dd_brand.ClearSelection();
        dd_brand.Items.FindByText(brand).Selected = true;

        dd_achievment.ClearSelection();
        dd_achievment.Items.FindByText(achievement).Selected = true;
        btn_Insert.Text = "Update Product";
    }
    else
    {
        if (!Page.IsPostBack)
        {
            bindcategories();
            bindbrands();
            bindachievments();
        }
        if (!FileUpload1.HasFile)
        {
            product_image.ImageUrl = "../assets/images/products/default.png";
        }

    }


}

按钮事件代码

protected void btn_Insert_Click(object sender, EventArgs e)
{
    getpicture();
    SqlCommand cmd;
    string pathimage ="";
    if (pathimage == "")
    {
        pathimage = product_image.ImageUrl;
    }
    else
    {
        pathimage = ViewState["pathimage"].ToString();
    }

    if (Request.QueryString["update"] != null)
    {

        int id = int.Parse(Request.QueryString["update"]);
        string query = "UPDATE Products SET product_name=@PRODUCTNAME,price=@PRIZE,unit=@UNIT,product_image=@IMAGE,available=@AVAILABLE,product_category=@CATEGORY,product_brand=@BRAND,product_achv=@ACHIV WHERE id = @ID";
        cmd = new SqlCommand(query);
        txt_name.Text = "";
        cmd.Parameters.Add("@PRODUCTNAME", txt_name.Text);
        cmd.Parameters.Add("@PRIZE", txt_price.Text);
        cmd.Parameters.Add("@UNIT", txt_unit.Text);
        cmd.Parameters.Add("@IMAGE", pathimage);
        cmd.Parameters.Add("@AVAILABLE", dd_available.SelectedItem.ToString());
        cmd.Parameters.Add("@CATEGORY", dd_category.SelectedValue);
        cmd.Parameters.Add("@BRAND", dd_brand.SelectedValue);
        cmd.Parameters.Add("@ACHIV", dd_achievment.SelectedValue);
        cmd.Parameters.Add("@ID", id);
        param.InsertUpdateData(cmd);
    }
    else
    {
        string query = "INSERT INTO Products(product_name,price,unit,product_image,available,product_category,product_brand,product_achv) VALUES(@PRODUCTNAME,@PRIZE,@UNIT,@IMAGE,@AVAILABLE,@CATEGORY,@BRAND,@ACHIV)";
        cmd = new SqlCommand(query);
        cmd.Parameters.Add("@PRODUCTNAME", txt_name.Text);
        cmd.Parameters.Add("@PRIZE", txt_price.Text);
        cmd.Parameters.Add("@UNIT", txt_unit.Text);
        cmd.Parameters.Add("@IMAGE", pathimage);
        cmd.Parameters.Add("@AVAILABLE", dd_available.SelectedItem.ToString());
        cmd.Parameters.Add("@CATEGORY", dd_category.SelectedValue);
        cmd.Parameters.Add("@BRAND", dd_brand.SelectedValue);
        cmd.Parameters.Add("@ACHIV", dd_achievment.SelectedValue);
        param.InsertUpdateData(cmd);
    }

}

是btn_submit中使用的getpicture函数

private void getpicture()
{
    try
    {
        if (FileUpload1.PostedFile != null)
        {
            string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
            string root = Server.MapPath("~");
            string path = root + "assets\\images\\products\\";
            FileUpload1.SaveAs(path + FileName);
            ViewState["pathimage"] = "/assets/images/products/" + FileName;
            this.product_image.ImageUrl = "../assets/images/products/upload.png";
        }
        else
        {
            Response.Write("Select an Image");
        }
    }
    catch (Exception ex)
    {
        Response.Write("Select an Image");
    }
}

也提供数据访问层插入更新数据代码

public Boolean InsertUpdateData(SqlCommand cmd)
{
    String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["OnlineStoreConnectionString"].ConnectionString;
    SqlConnection con = new SqlConnection(strConnString);
    cmd.CommandType = CommandType.Text;
    cmd.Connection = con;
    try
    {
        con.Open();
        cmd.ExecuteNonQuery();
        System.Web.HttpContext.Current.Response.Write("Succed");
        return true;
    }

    catch (Exception ex)
    {
       System.Web.HttpContext.Current.Response.Write(ex.ToString());
       return false;
    }

    finally
    {
        con.Close();
        con.Dispose();
    }
}

服务器控件

   <div class="row">
    <div class="col-md-6">
        <asp:TextBox ID="txt_name" runat="server" CssClass="form-control" placeholder="Product Name"></asp:TextBox>
        <br />
        <asp:TextBox ID="txt_price" runat="server" CssClass="form-control" placeholder="Product Price"></asp:TextBox>
        <br />
        <asp:TextBox ID="txt_unit" runat="server" CssClass="form-control" placeholder="Product Unit"></asp:TextBox>
        <br />
        <asp:DropDownList ID="dd_available" runat="server" CssClass="form-control">
            <asp:ListItem>Is Product Available</asp:ListItem>
            <asp:ListItem>Available</asp:ListItem>
            <asp:ListItem>Not Avaliable</asp:ListItem>
        </asp:DropDownList>
        <br />
        <asp:DropDownList ID="dd_category" runat="server" CssClass="form-control"></asp:DropDownList>
        <br />
        <asp:DropDownList ID="dd_brand" runat="server" CssClass="form-control"></asp:DropDownList>
        <br />
        <asp:DropDownList ID="dd_achievment" runat="server" CssClass="form-control"></asp:DropDownList>
        <br />
    </div>
    <div class="col-md-2"></div>
    <div class="col-md-4">
        <asp:Image ID="product_image" runat="server"  style="height:231px;width:225px;" CssClass="form-control" />

        <asp:FileUpload ID="FileUpload1" runat="server"   onchange = "show_image(this);" />

    </div>

</div>
<br />
<div class="row">
    <div class="col-md-3 col-md-offset-6">
        <asp:Button ID="btn_Insert" runat="server" Text="Create Product" CssClass="btn btn-primary btn-lg" OnClick="btn_Insert_Click" />
    </div>
</div>

单击更新按钮之前

在单击更新按钮之前

在分别更新文本框值和单击“上传”按钮后,我的服务器控件值均未更改。这里是

观看局部变量

但是在创建产品的情况下它可以工作

安德烈斯·摩尔曼(AndrésMurman)

萨阿德,我认为错误是在page_load事件中。如果您的查询字符串中的update参数不为null,则您始终将文本框替换为DB的数据。您的代码应如下所示

protected void Page_Load(object sender, EventArgs e)
{

if (Request.QueryString["update"] !=null)
{
    if (!Page.IsPostBack)
    {
        bindcategories();
        bindachievments();
        bindbrands();

    int id = int.Parse(Request.QueryString["update"]);
    string query = "SELECT * FROM ProductView WHERE id = " + id.ToString();
    DataTable dtupd = new DataTable();
    dtupd = param.All_data(query);

    string name = "",available="",category="",brand="",achievement="",image="";
    decimal price=0;
    int unit = 0;

    foreach (DataRow row in dtupd.Rows)
    {
         name = row.Field<string>("product_name");
         price = row.Field<decimal>("price");
         unit = row.Field<int>("unit");
         image = row.Field<string>("product_image");
         available = row.Field<string>("available");
         category = row.Field<string>("category_name");
         brand = row.Field<string>("brand_name");
         achievement = row.Field<string>("achievement");
    }
    txt_name.Text = name;
    txt_price.Text = price.ToString();
    txt_unit.Text = unit.ToString();
    product_image.ImageUrl = "../" + image;

    dd_available.ClearSelection();
    dd_available.SelectedValue = available;

    dd_category.ClearSelection();
    dd_category.Items.FindByText(category).Selected = true;

    dd_brand.ClearSelection();
    dd_brand.Items.FindByText(brand).Selected = true;

    dd_achievment.ClearSelection();
    dd_achievment.Items.FindByText(achievement).Selected = true;
    btn_Insert.Text = "Update Product";
    }
}
else
{
    if (!Page.IsPostBack)
    {
        bindcategories();
        bindbrands();
        bindachievments();
    }
    if (!FileUpload1.HasFile)
    {
        product_image.ImageUrl = "../assets/images/products/default.png";
    }

}


}

希望能帮助到你...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在asp.net中单击按钮时单击空文本框的Javascript验证

来自分类Dev

在文本框中插入一个日期,然后在日历中选择该日期asp.net c#

来自分类Dev

如何验证文本框仅在ASP.NET C#中输入几个选项?

来自分类Dev

如何设置文本框的值textmode = date ASP.NET C#

来自分类Dev

ASP.NET MVC文本框中的TDD

来自分类Dev

验证文本框ASP.NET C#上的空值

来自分类Dev

在Javascript中插入文本框值不会通过ASP.NET验证

来自分类Dev

文本框数据到asp.net中的xml

来自分类Dev

按钮单击事件在ASP.NET C#之后的代码中不起作用

来自分类Dev

Asp.net MVC中的“自动完成”文本框

来自分类Dev

asp.net C#更新文本框值而无需刷新

来自分类Dev

文本框中的Asp.net C#印地语字体在PostBack中转换为数字和符号

来自分类Dev

在文本框中插入一个日期,然后在日历中选择该日期asp.net c#

来自分类Dev

在JavaScript中引用ASP.net文本框数据

来自分类Dev

在jQuery代码中更改文本框值时,不会触发asp.net文本框更改事件

来自分类Dev

如何在Asp.Net中的文本框中更改文本的内容

来自分类Dev

如何验证文本框仅在ASP.NET C#中输入几个选项?

来自分类Dev

在GridView Asp.net中添加搜索文本框

来自分类Dev

ASP.NET C#按下按钮从文本框中选择部分文本

来自分类Dev

在asp.net vb.net中为文本框保留事件

来自分类Dev

文本框值在asp.net中未更新

来自分类Dev

如何使用asp.net C#获取Google Maps标记的坐标并将其存储在文本框或标签中

来自分类Dev

更改文本框,触发客户端事件和服务器事件后,ASP.NET单击按钮

来自分类Dev

异步输出到asp.net中的文本框

来自分类Dev

为什么通过Javascript更改文本框的文本不会触发Asp .Net中的OnTextChanged

来自分类Dev

使用C#将文本框中的日期与ASP.NET中数据库中的日期进行比较

来自分类Dev

如何更改文本框的大小,使其在asp.net核心默认模板中变长

来自分类Dev

如何在asp.net中验证客户端的文本框,而无需单击任何按钮

来自分类Dev

无法从 asp.net c# 中的文本框中获取值

Related 相关文章

  1. 1

    在asp.net中单击按钮时单击空文本框的Javascript验证

  2. 2

    在文本框中插入一个日期,然后在日历中选择该日期asp.net c#

  3. 3

    如何验证文本框仅在ASP.NET C#中输入几个选项?

  4. 4

    如何设置文本框的值textmode = date ASP.NET C#

  5. 5

    ASP.NET MVC文本框中的TDD

  6. 6

    验证文本框ASP.NET C#上的空值

  7. 7

    在Javascript中插入文本框值不会通过ASP.NET验证

  8. 8

    文本框数据到asp.net中的xml

  9. 9

    按钮单击事件在ASP.NET C#之后的代码中不起作用

  10. 10

    Asp.net MVC中的“自动完成”文本框

  11. 11

    asp.net C#更新文本框值而无需刷新

  12. 12

    文本框中的Asp.net C#印地语字体在PostBack中转换为数字和符号

  13. 13

    在文本框中插入一个日期,然后在日历中选择该日期asp.net c#

  14. 14

    在JavaScript中引用ASP.net文本框数据

  15. 15

    在jQuery代码中更改文本框值时,不会触发asp.net文本框更改事件

  16. 16

    如何在Asp.Net中的文本框中更改文本的内容

  17. 17

    如何验证文本框仅在ASP.NET C#中输入几个选项?

  18. 18

    在GridView Asp.net中添加搜索文本框

  19. 19

    ASP.NET C#按下按钮从文本框中选择部分文本

  20. 20

    在asp.net vb.net中为文本框保留事件

  21. 21

    文本框值在asp.net中未更新

  22. 22

    如何使用asp.net C#获取Google Maps标记的坐标并将其存储在文本框或标签中

  23. 23

    更改文本框,触发客户端事件和服务器事件后,ASP.NET单击按钮

  24. 24

    异步输出到asp.net中的文本框

  25. 25

    为什么通过Javascript更改文本框的文本不会触发Asp .Net中的OnTextChanged

  26. 26

    使用C#将文本框中的日期与ASP.NET中数据库中的日期进行比较

  27. 27

    如何更改文本框的大小,使其在asp.net核心默认模板中变长

  28. 28

    如何在asp.net中验证客户端的文本框,而无需单击任何按钮

  29. 29

    无法从 asp.net c# 中的文本框中获取值

热门标签

归档