PDA

View Full Version : چرا این کد اجرا نمی شه؟



zahracomputer
پنج شنبه 04 مرداد 1386, 18:20 عصر
سلام
من مِ خوام از خاصیت آپدیت دیتا گرید استفاده کنم بنابراین اذیت راکلیک می کنم و داده های سطر مربوطه به شکل textBox در می آیند و من فیلد مربوطه را تغییر می دهم و برای نگهداری مقدار جدید از دستور زیر استفاده می کنم
TextBox textName = (TextBox) e.Item.Cells[2].Controls[0];
ولی در textName همان مقدار اولی را قرار می دهد. برای نگهداری مقدار جدید باید از چه دستوری استفاده کنم.
با تشکر

vpourshab
پنج شنبه 04 مرداد 1386, 18:24 عصر
اگر منظورت اینه که نشان میده ولی در دیتابیس ذخیره می کند
باید دیتا ست مربوط به دیتا گرید را refresh کنی همچنین خود دیتا گراید را هم همینطور.
اگر بیشتر توضیح دهید بهتر راهنمایی میکنم البته اگر بتوانم

zahracomputer
پنج شنبه 04 مرداد 1386, 23:22 عصر
من مقدار جدیدی را که در textBox می نویسم با استفاده از دستور فوق در یک textBox می ریزم و مقدار این textBox را در یک متغیر رشته ای می ریزم ولی مقدار این متغیر رشته ای همان مقدار اولی textBox می باشد درصورتیکه من میخوام مقدار جدیدی را که می نویسم در متغیر قرار گیرد.

once4ever
پنج شنبه 04 مرداد 1386, 23:26 عصر
درست نفهمیدم چی گفتی
احتمالا جایی که کدت میذاری درست نیست
اما اگر از بیندینگ سورس داری استفاده میکنی، باید اول
bindingSource1.EndEdit(); صدا بزنی و بعد مقدار تکست باکس بخونی.

zahracomputer
جمعه 05 مرداد 1386, 00:13 صبح
من داده ها را در یک دیتا گرید به کاربر نشان می دهم و میخوام امکان ویرایش را به کاربر بدم برای همین کار در دیتا گرید قسمت Edit مربوط به ButtonCommand را انتخاب کردم و سپس در رویدادUpdateCommand مربوط به دیتا گرید دستورات زیر را نوشنم
SqlConnection sqlconnection1 = new SqlConnection("Data Source=ABC\\SQLEXPRESS;Initial Catalog=WEBTEST;Integrated Security=True");
TextBox textName = (TextBox) e.Item.Cells[2].Controls[0];
textName = (TextBox)e.Item.Cells[2].Controls[0];
string recKey;
string newname=textName.Text ;
Label1.Text =textName.Text;
recKey = DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
Label3.Text = e.Item.Cells[2].Text.ToString();
string strSql;
strSql = "Update TEST set NAME=@Name Where StNo=@strec";
SqlCommand cmd = new SqlCommand(strSql,sqlconnection1);
cmd.Parameters.Add("@Name", newname);
cmd.Parameters.Add("@strec", recKey);
sqlconnection1.Open();
cmd.ExecuteNonQuery();


DataGrid1.EditItemIndex = -1;



و هرگاه دکمه Edit را کلیک می کنیم داده ها درTextBoxنمایش داده می شوند که امکان تغییر به کاربر داده شود که آنجوری که من خوندم خط
TextBox textName = (TextBox) e.Item.Cells[2].Controls[0];


مقدار جدیدی را که ما در TextBox وارد می کنیم در متغیر مربوطه قرار می دهد. ولی در برنامه ای که من نوشتم مقدار قبلی را در متغیر مربوطه می ریزد ، برای اینکه مقدار جدید را در متغیر مربوطه قرار بگیرد باید چیکار کنم؟

once4ever
جمعه 05 مرداد 1386, 09:11 صبح
و سپس در رویدادUpdateCommand مربوط به دیتا گری
???
فکر کنم خیلی جاها اشتباه کردی
دیتاگریدت با چه دستوری پر میکنی؟

choobin84
جمعه 05 مرداد 1386, 11:30 صبح
دوست عزیز ، مطلبی که در ورد نوشته اید را در ند پد کپی کنید و از آنجا به سایت منتقل کنید.
خیلی گنگه.

zahracomputer
جمعه 05 مرداد 1386, 14:07 عصر
در page_load کدهای زیر را می نویسم تا دیتا گرید پر شود.
string sqlsel;
sqlsel = "SELECT * FROM TEST";
sqlconnection1.Open();
SqlCommand cmd = newSqlCommand(sqlsel, sqlconnection1);
SqlDataAdapter da1 = newSqlDataAdapter(sqlsel, sqlconnection1);
DataSet dataSet1 = newDataSet();
da1.Fill(dataSet1, "TEST");
DataGrid1.DataSource = dataSet1.Tables["TEST"];
DataGrid1.DataBind();
با این دستورات داده های دیتابیس در دیتا گرید نمایش داده می شود.