0

我正在研究添加到购物车功能,并且我添加了一个GridView启用分页的控件。在 中GridView,我在文本框中显示数量并处理该文本框的OnTextChanged事件。现在的问题是,如何将更改后的数量文本保持在会话或视图状态以及在哪一行,以便我可以更新我GridView的数据并将该数据再次绑定到GridView

在这里,我使用了GridViewid gvMaster。

protected void txtQuantity_TextChanged(object sender, EventArgs e)
{      
    gvMaster.DataSource = ProductDetailsGridMaster();
    gvMaster.AllowPaging = true;
    gvMaster.DataBind();
}
public DataTable ProductDetailsGridMaster()
{
    DataTable dtProducts = new DataTable();
    dtProducts.Columns.Add("ProductId");
    dtProducts.Columns.Add("ProductName");
    dtProducts.Columns.Add("ProductPrice");
    dtProducts.Columns.Add("Quantity");
    dtProducts.Columns.Add("Price");
    gvMaster.AllowPaging = false;
    if (Session["dtProducts"] != null)
    {
        GridView gv = new GridView();
        gv.DataSource = Session["dtProducts"];

        gvMaster.DataSource = gv.DataSource;
        gvMaster.DataBind();
        lblMessage.Text = "";
    }
    //GridView gvc = (GridView)Page.FindControl("gvMaster");

    for (int i = 0; i < gvMaster.Rows.Count; i++)
    {
        Label lblProductId = (Label)gvMaster.Rows[i].Cells[0].FindControl("lblProductId");
        Label lblProductName = (Label)gvMaster.Rows[i].Cells[1].FindControl("lblProductName");
        Label lblProductPrice = (Label)gvMaster.Rows[i].Cells[2].FindControl("lblProductPrice");
        //Label lblssno = (Label)gv.Rows[i].Cells[2].FindControl("lblSSNo");
        TextBox txtQuantity = (TextBox)gvMaster.Rows[i].Cells[3].FindControl("txtQuantity");
        //TextBox mastertxtQuantity = (TextBox)gvMaster.Rows[i].Cells[3].FindControl("txtQuantity");
        Label lblPrice = (Label)gvMaster.Rows[i].Cells[4].FindControl("lblPrice");
        var Price = decimal.Parse(lblProductPrice.Text) * decimal.Parse(txtQuantity.Text);
        lblPrice.Text = Price.ToString();
        DataRow dr = dtProducts.NewRow();
        dr["ProductId"] = lblProductId.Text;
        dr["ProductName"] = lblProductName.Text;
        dr["ProductPrice"] = lblProductPrice.Text;
        dr["Quantity"] = txtQuantity.Text;
        dr["Price"] = lblPrice.Text;
        dtProducts.Rows.Add(dr);
    }
    Session["dtProducts"] = dtProducts;
    return dtProducts;
}

我想在启用分页的网格中显示更改的数量值。

4

2 回答 2

0

我几乎无法理解您的代码的真正作用。但是,像控件状态这样的信息不应该保存在 Session 中。请改用 ViewState。

于 2011-01-02T10:52:13.207 回答
-1

将 C# Asp.net 标签添加到您的问题中。还可以使用 asp.net 查找 n-tier programming/mvc ,它将帮助您改进代码很多倍

于 2011-01-02T05:58:33.017 回答