gridview中的TextChanged事件无法正常工作 [英] TextChanged event in gridview not working

查看:97
本文介绍了gridview中的TextChanged事件无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨!我正在使用Datatable来维护购物车。在gridview中,我有一个数量的文本框,我希望当用户更改数量时,小计字段会相应地更改,并且数据表也会相应地更新。但我的textChanged事件根本没有开火。请帮忙!!!!这是代码:

 使用系统; 
使用 System.Collections.Generic;
使用 System.Linq;
使用 System.Web;
使用 System.Web.UI;
使用 System.Web.UI.WebControls;
使用 System.Data;

public partial class _Default:System.Web.UI.Page
{
protected void Page_Load( object sender,EventArgs e)
{
if (Session [ 购物车] == null
{
lblDisp.Text = 你的购物车中没有物品!!!! ;
}
else
{
DataTable mydt = new DataTable();
mydt =(DataTable)会话[ 购物车];
GVCart.DataSource = mydt;
GVCart.DataBind();
}

}

受保护 void GVCart_RowDeleting( object sender,GridViewDeleteEventArgs e)
{
DataTable dt =(DataTable)Session [ 购物车];
GridViewRow row =(GridViewRow)GVCart.Rows [e.RowIndex];
string PId = GVCart.Rows [e.RowIndex] .Cells [ 0 ]。 ;
for int i = dt.Rows.Count - 1 ; i > = 0 ; i--)
{
DataRow dr = dt.Rows [i];
if (dr [ PrId] == PId)
{
dt.Rows.Remove(dr);
}
}
GVCart.DataSource = dt;
GVCart.DataBind();
Session.Add( Cart,dt);
}
受保护 void txtQnty_TextChanged( object sender,EventArgs e)
{
TextBox txt = sender as TextBox;
GridViewRow row = txt.NamingContainer as GridViewRow;
int index = row.RowIndex;
DataTable dt =(DataTable)会话[ 购物车];
dt.Rows [index] [ 3 ] = txt.Text;
dt.Rows [index] [ 5 ] =( Double .Parse(txt.Text )* Double .Parse(dt.Rows [index] [ 4 ]。ToString()))。的ToString();
Session.Add( Cart,dt);
GVCart.DataSource = dt;
GVCart.DataBind();
}
}



请回复!!!

解决方案

在行数据绑定event创建一个像这样的textchanged事件:

 TextBox txt = e.Row.FindControl(txtQnty)as TextBox; 
txt.TextChanged + = new EventHandler(txtQnty_TextChanged);



比照常实施

  protected   void  txtQnty_TextChanged( object  sender, EventArgs e)
{
// 您的代码
}



问候..:笑:


感谢回复Rohan!但问题解决了! ;)我只需要在page_load和宾果游戏中使用if(!IspostBack)!它就像一个魅力! :)

Hi! I am using a Datatable to maintain a shopping cart. In the gridview I have a textbox for quantity and I want that when the user changes the quantity, the subtotal field changes accordingly, and the datatable also gets updated accordingly. But my textChanged event is not firing at all. Please help!!!! Here's the code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
            if (Session["Cart"] == null)
            {
                lblDisp.Text = "You Have No Items in Cart Right Now!!!!";
            }
            else
            {
                DataTable mydt = new DataTable();
                mydt = (DataTable)Session["Cart"];
                GVCart.DataSource = mydt;
                GVCart.DataBind();
            }
        
    }

    protected void GVCart_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        DataTable dt = (DataTable)Session["Cart"];
        GridViewRow row = (GridViewRow)GVCart.Rows[e.RowIndex];
        string PId = GVCart.Rows[e.RowIndex].Cells[0].Text;
        for (int i = dt.Rows.Count - 1; i >= 0; i--)
        {
            DataRow dr = dt.Rows[i];
            if (dr["PrId"] == PId)
            {
                dt.Rows.Remove(dr);
            }
        }
        GVCart.DataSource = dt;
        GVCart.DataBind();
        Session.Add("Cart", dt);
    }
    protected void txtQnty_TextChanged(object sender, EventArgs e)
    {
        TextBox txt = sender as TextBox;
        GridViewRow row = txt.NamingContainer as GridViewRow;
        int index = row.RowIndex;
        DataTable dt = (DataTable)Session["Cart"];
        dt.Rows[index][3] = txt.Text;
        dt.Rows[index][5] = (Double.Parse(txt.Text) * Double.Parse(dt.Rows[index][4].ToString())).ToString();
        Session.Add("Cart", dt);
        GVCart.DataSource = dt;
        GVCart.DataBind();
    }
}


Please reply!!!

解决方案

On row databound event create a textchanged event like this:

TextBox txt = e.Row.FindControl("txtQnty") as TextBox;
 txt.TextChanged += new EventHandler(txtQnty_TextChanged);


than implement it as usual

protected void txtQnty_TextChanged(object sender, EventArgs e)
{
//your code
}


Regards..:laugh:


Thanks For Replying Rohan! But The problem is solved! ;) I just had to use an if(!IspostBack) at page_load, and bingo! It worked like a charm! :)


这篇关于gridview中的TextChanged事件无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆