ورود

View Full Version : سوال: مشکل در textbox در gridview(لطفا کمک کنید)



compute87
چهارشنبه 04 شهریور 1388, 19:33 عصر
با سلام خدمت اساتید محترم
همین اول بگم که خیلی سرچ کردم اما اون چیزی رو که می خواستم پیدا نکردم.
ببینید من میخوام یک سبد خرید بنویسم و سبد خریدی رو که یکی از اساتید گذاشته بودن گرفتم اما از پاس دادن اطلاعات به کلاسها سر در نیاوردم پس خودم می خوام اونو بنویسم در واقع بدون کلاس می خوام بنویسمش.
و اما مشکل من :
ببینید من توی gridview اومدم و یک textbox برای تعداد محصول گذاشتم که کاربر اول تعداد را وارد می کند و بعد بر روی دکمه به روز رسانی در همان سطر کلیک می کند تا جمع قیمت در ستون مثلا 4 نمایش داده شود.کد گرفتن تعداد از textbox رو نوشتم اما هر دفعه همون تعداده قبلی که قبلا دادم رو در نظر می گیره و کدهام رو در رویداد RowUpdating نوشتم از c# استفاده می کنم.
لطفا کمکم کنید.
خیلی خیلی ممنون.:اشتباه::افسرده:

compute87
پنج شنبه 05 شهریور 1388, 10:07 صبح
از اساتید محترم کسی نیست یه کمکی به من بکنه.
:اشتباه:

hadi000333
پنج شنبه 05 شهریور 1388, 13:15 عصر
هر چقدر هم خوب توضیح داده باشی
بدون کد نمی شه نظر داد.

الان تنها چیزی که به ذهنم میرسه اینه که توی رویداد page_load ممکنه gridview رو databind کرده باشی
اگه اینطوریه یه شرط بذار که اگه صفحه پست بک بود databind نشه.

compute87
پنج شنبه 05 شهریور 1388, 21:08 عصر
با تشکر از شما استاد گرامی که توجه داشتید به سئوال من و خیلی ازتون ممنونم.
این کدی هست که توی صفحم نوشتم.



DataSet ds = new DataSet();
DataTable cart;
DataView cartview;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["shopping"] == null)
{
cart = new DataTable();
cart.Columns.Add(new DataColumn("id", typeof(string)));
cart.Columns.Add(new DataColumn("Item", typeof(string)));
cart.Columns.Add(new DataColumn("Price", typeof(string)));
cart.Columns.Add(new DataColumn("quantity", typeof(string)));
cart.Columns.Add(new DataColumn("kol", typeof(string)));
Session["shopping"] = cart;
}
else
{
cart = (DataTable)Session["shopping"];
}
cartview = new DataView(cart);
GridView2.DataSource = cartview;
GridView2.DataBind();

string strCon = ConfigurationManager.AppSettings["connectionString"].ToString();
SqlConnection con = new SqlConnection(strCon);
SqlDataAdapter ad = new SqlDataAdapter("Select pic,pid,bbrand,model,price from product inner join brand on product.coid=brand.coid Where npid = '" + DropDownList1.SelectedValue.ToString() + "'", con);
ad.Fill(ds, "Products");
GridView1.DataSource = ds.Tables["Products"];
GridView1.DataBind();

}

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
DataRow dr = cart.NewRow();
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow selectedrow = GridView1.Rows[index];
TableCell nameitem = selectedrow.Cells[4];
string item = nameitem.Text;
TableCell priceitem = selectedrow.Cells[5];
string price = priceitem.Text;
TableCell idp = selectedrow.Cells[2];
string idpro = idp.Text;


if (e.CommandName == "AddToCart")
{
dr[0] =idpro ;
dr[1] =item;
dr[2] = price;
dr[3] = 1;
dr[4]=koleprice(int.Parse(price),1);
int intposition=-1;
cartview.Sort = "id";
intposition= cartview.Find(idpro);
if (intposition > -1)
{
}
else
{
cart.Rows.Add(dr);
}
cartview.Sort = "";
}

GridView2.DataBind();
}

public int koleprice(int p, int t)
{
return p * t;
}

protected void GridView2_RowUpdating1(object sender, GridViewUpdateEventArgs e)
{
int pID = int.Parse(GridView2.DataKeys[e.RowIndex].Value.ToString());
Response.Write(pID);
GridViewRow row = GridView2.Rows[pID];
TextBox txtQuantity = row.FindControl("tedad") as TextBox;
e.NewValues["txtQuantity"] = txtQuantity.Text;
}


قابل ذکر هست که توی صفحم دو تا gridview دارم و gridview2 که سبد خریدم باشه همش templatefielde و دکمه ی به روز رسانی هم توی itemtemplate یک linkbutton هست.
و روی هر کدوم از itemهام روی gride1 که کلیک کنم به gride2 اضافه می شه.
ممنون میشم اگه بهم کمک کنید مشکلم بر طرف شه.میدونید انگار اصلا نمی تونه مقدار از توی textbox،grideview بگیره.:گریه::گریه:

alireza_s_84
پنج شنبه 05 شهریور 1388, 21:22 عصر
سلام
بعد از اینکه عملیات Update گرید انجام شد متد بایند رو دوباره صدا بزن تا گرید به روز بشه
خودت کد رو نوشتی فقط اینو اضافه کن GridView2.DataBind

compute87
پنج شنبه 05 شهریور 1388, 21:42 عصر
با تشکر از جوابی که دادید ولی بازم نشد. کد دیگه ای بلد هستید که بتونه اطلاعات رو از textbox توی gridview بگیره؟
لطفا هر کدوم از دوستان که کد دیگه ای واسه update دارن یا مشکل کد منو میفهمن کمکم کنن مرسی.

hadi000333
جمعه 06 شهریور 1388, 13:10 عصر
همونطر که گفتم مشکلت با این حل می شه:


protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
return;
....

compute87
جمعه 06 شهریور 1388, 13:29 عصر
ممنون از کمکتون ولی بازم نشد.
یه کد دیگه واسه update داده های توی gridview یا datatable دارید واسم بگذارید؟
ممنون از کمکتون.

compute87
جمعه 06 شهریور 1388, 20:57 عصر
یعنی واقعا کسی از دوستان نمی تونه یه وقتی بگذاره مشکل این کد منو پیدا کنه؟!!!!!!!!!!!!!!!!!
یعنی کسی نمیدونه من چجوری باید عددمو از textbox بگیرم و در datatable عددمو update کنم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
:متفکر::متفکر::متفکر:

hadi000333
شنبه 07 شهریور 1388, 13:24 عصر
کل سورست رو بذار منظورم فایل .aspx و .cs هست.

hadi000333
شنبه 07 شهریور 1388, 14:10 عصر
الان به این دقت کردم

e.NewValues["txtQuantity"] = txtQuantity.Text;
زمانی می تونی از کد بالا استفاده کنی که ار DataSource استفاده کرده باشی
منظورم از datasource :sqldatasource,objectdatasource,....
چون تو الان هیچ متد Update ای نداری
پس باید به صورت دستی Update رو
پایده سازی کنی

compute87
شنبه 07 شهریور 1388, 20:48 عصر
خیلی ممنون از لطفتون.
میشه لطف کنید و اگه کد update دستی رو دارید واسم بگذارید.

احمد سامعی
پنج شنبه 12 شهریور 1388, 23:18 عصر
یعنی واقعا کسی از دوستان نمی تونه یه وقتی بگذاره مشکل این کد منو پیدا کنه؟!!!!!!!!!!!!!!!!!
یعنی کسی نمیدونه من چجوری باید عددمو از textbox بگیرم و در datatable عددمو update کنم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
:متفکر::متفکر::متفکر:

شما صفحه خودت رو اينجوري آيا ست كردي ؟

<%@ Page Language="C#" ValidateRequest="false".....

compute87
دوشنبه 16 شهریور 1388, 22:24 عصر
با سلام
با تشکر از توجه شما اگه منظورتونو از ست کردن درست فهمیده باشم.
نه به صورت زیر ست شده.

<%@
Page Language="C#‎" MasterPageFile="~/MasterPage2.master" AutoEventWireup="true" CodeFile="shopp.aspx.cs" Inherits="shopp" Title="Untitled Page" %>