簡體   English   中英

asp.net C中按鈕單擊事件的文本框值不會改變#

[英]Textbox value doesn't change on button click event in asp.net C#

我遇到了一個問題,我無法獲得任何控件的值,而不僅僅是按鈕點擊事件中的文本框,所以這里是場景,你可以跳過它,只是可以查看我的按鈕點擊事件

頁面產品正在執行2個操作

  • 創造
  • 更新

當用戶在更新頁面中單擊GridView上的編輯時,它會將其重定向到產品頁面進行更新,同一頁面也在執行創建產品操作,因此當我收到QueryString值時,我將更新產品表,當我不會這樣時,我只是執行創建操作。


現在,當沒有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>

在單擊更新按鈕之前

在單擊更新按鈕之前

我分別更新文本框值后,單擊按鈕上傳沒有我的服務器控件值更改。 這里是

看着局部變量

但是在創建產品的情況下它可以工作

Saad,我認為錯誤發生在page_load事件中。 如果在您的查詢字符串中更新參數不為空,那么您始終使用數據庫的數據替換文本框。 你的代碼應該是這樣的

 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"; } } } 

希望能幫助到你...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM