Как я могу получить все GridViewRow из элемента управления GridView с включенной подкачкой? - PullRequest
0 голосов
/ 02 января 2011

Я работаю над функцией добавления в корзину, и я добавил элемент управления GridView с включенной подкачкой страниц.В GridView я показываю количество в текстовом поле и обрабатываю событие OnTextChanged для этого текстового поля.Теперь проблема в том, как мне сохранить измененный текст количества в состоянии сеанса или просмотра и в какой строке, чтобы я мог обновить свой GridView и снова связать эти данные с GridView?

Здесь я взял GridView с идентификатором 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;
}

Я хочу показать измененное значение количества в сетке с включенной подкачкой.

Ответы [ 2 ]

0 голосов
/ 02 января 2011

Я с трудом понимаю, что на самом деле делает ваш код.Однако такая информация, как состояние элемента управления, не должна храниться в сеансе.Вместо этого используйте ViewState.

0 голосов
/ 02 января 2011

Добавьте теги C # Asp.net к вашему вопросу.Также посмотрите n-уровневое программирование / mvc с asp.net, это поможет вам улучшить ваш код во много раз

...