PDA

View Full Version : سوال: چطور میتوان یک رکورد از datagridview رو update کرد؟



ah.amir
یک شنبه 21 آبان 1391, 03:24 صبح
با سلام خدمت دوستان
ممنون میشم اگر سوال منو جواب بدید

چطور میتوان یک رکورد از datagridview (منظورم انتخاب currentRow هست) در حالی که از

storedProcedure در commad استفاده کردیم رو update کرد؟

با سپاس

ali_habibi1384
یک شنبه 21 آبان 1391, 05:54 صبح
دو تا راه داري:
1-اينكار بصورت دستي بايد انجام بشه و مقاديري كه در پراسيجرت آپديت كردي رو دستي به گريد اضافه كني:
DataGridView1["ColumnName", DataGridView1.CurrentRow.Index].Value = YourValue;
راه دوم اينكه بعد از اينكه آپديت كردي كل اطلاعات رو از ديتا بيس بخوني و به گريدت منتقل كني كه البته با اين كار مكان جاري داده ها و سورتها و فيلترهات بهم ميريزه.براي اينكار بعد از اينكه اطلاعات رو از ديتا بيس ميخوني به ديتا تيبل منتقل و ديتا تيبل رو به گريد بايند ميكنيد:
DataGridView1.DataSurce=DataTable1;

ah.amir
یک شنبه 21 آبان 1391, 16:19 عصر
خیلی ممنونم از پاسخت دوست عزیز
همون کد اول جواب داد، اما با اینکه از دستور command استفاده کردم و ارتباط مستقیم با دیتا دارم اما تغییراتی که در application انجام میشه به دیتا بیس منتقل نمیشه و وقتی gridview رو refresh میکنم ،دوباره همون داده های قبلی رو نمایش میده

matin.soft
یک شنبه 21 آبان 1391, 16:44 عصر
خیلی ممنونم از پاسخت دوست عزیز
همون کد اول جواب داد، اما با اینکه از دستور command استفاده کردم و ارتباط مستقیم با دیتا دارم اما تغییراتی که در application انجام میشه به دیتا بیس منتقل نمیشه و وقتی gridview رو refresh میکنم ،دوباره همون داده های قبلی رو نمایش میده
شما باید ابتاداز کد زیر استفاده کنی بعد عملیات آپدیت رو انجام بدی.
dataBindingSource.EndEdit();

ali_habibi1384
یک شنبه 21 آبان 1391, 16:50 عصر
خیلی ممنونم از پاسخت دوست عزیز
همون کد اول جواب داد، اما با اینکه از دستور command استفاده کردم و ارتباط مستقیم با دیتا دارم اما تغییراتی که در application انجام میشه به دیتا بیس منتقل نمیشه و وقتی gridview رو refresh میکنم ،دوباره همون داده های قبلی رو نمایش میده

خب ممكنه كه پراسيجر آپديت يا نحوه اجراي كامندتون و پارامترهاش مشكل داشته باشه.كدتونو اينجا بذاريد

ah.amir
یک شنبه 21 آبان 1391, 19:04 عصر
خب ممكنه كه پراسيجر آپديت يا نحوه اجراي كامندتون و پارامترهاش مشكل داشته باشه.كدتونو اينجا بذاريد


private void buttonUpdate_Click(object sender, EventArgs e)
{
SqlConnection Cn = new SqlConnection(helper.connectionString);
SqlCommand cmd = new SqlCommand();
if (dataGridView1.CurrentRow.Selected)
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "UpdateOnebyOne";
cmd.Connection = Cn;
cmd.Parameters.AddWithValue("@FirstName", textBoxFName.Text);
cmd.Parameters.AddWithValue("@LastName", textBoxLName.Text);
cmd.Parameters.AddWithValue("@PhoneCode", textBoxPhoneCode.Text);
cmd.Parameters.AddWithValue("@PhoneNumber", textBoxPhoneNumber.Text);
cmd.Parameters.AddWithValue("@MobileNumber", textBoxMobileNumber.Text);
cmd.Parameters.AddWithValue("@Fax", textBoxFax.Text);
cmd.Parameters.AddWithValue("@Email", textBoxEmail.Text);
cmd.Parameters.AddWithValue("@postalCode", textBoxPstalCode.Text);
cmd.Parameters.AddWithValue("@Address", textBoxAddress.Text);
cmd.Parameters.AddWithValue("@City", textBoxCity.Text);
cmd.Parameters.AddWithValue("@State", textBoxState.Text);
cmd.Parameters.AddWithValue("@Country", textBoxCountry.Text);
Cn.Open();
cmd.ExecuteNonQuery();

Cn.Close();

dataGridView1["FirstName", dataGridView1.CurrentRow.Index].Value = textBoxFName.Text;
dataGridView1["LastName", dataGridView1.CurrentRow.Index].Value = textBoxLName.Text;
dataGridView1["PhoneCode", dataGridView1.CurrentRow.Index].Value = textBoxPhoneCode.Text;
dataGridView1["PhoneNumber", dataGridView1.CurrentRow.Index].Value = textBoxPhoneNumber.Text;
dataGridView1["MobileNumber", dataGridView1.CurrentRow.Index].Value = textBoxMobileNumber.Text;
dataGridView1["Fax", dataGridView1.CurrentRow.Index].Value = textBoxFax.Text;
dataGridView1["Email", dataGridView1.CurrentRow.Index].Value = textBoxEmail.Text;
dataGridView1["postalCode", dataGridView1.CurrentRow.Index].Value = textBoxPstalCode.Text;
dataGridView1["Address", dataGridView1.CurrentRow.Index].Value = textBoxAddress.Text;
dataGridView1["City", dataGridView1.CurrentRow.Index].Value = textBoxCity.Text;
dataGridView1["State", dataGridView1.CurrentRow.Index].Value = textBoxState.Text;
dataGridView1["Country", dataGridView1.CurrentRow.Index].Value = textBoxCountry.Text;
}
else
{
MessageBox.Show("Please select a Row","Exception",MessageBoxButtons.OK,MessageBoxIcon.Information);
}

ah.amir
یک شنبه 21 آبان 1391, 19:12 عصر
خب ممكنه كه پراسيجر آپديت يا نحوه اجراي كامندتون و پارامترهاش مشكل داشته باشه.كدتونو اينجا بذاريد

الان یه تغییر روی دستور پروسیجر دادم این بار تمام رکورد های دیتا بیس رو Update میکنه نه رکورد مورد نظرم رو که در gridview انتخاب کردم.
کد sql هم میذارم.

ALTER PROC [dbo].[UpdateOnebyOne]
@FirstName nvarchar(20),
@LastName nvarchar(50),
@PhoneCode nchar(7),
@PhoneNumber nvarchar(20),
@MobileNumber nvarchar(11),
@Fax nvarchar(24),
@Email nvarchar(50),
@PostalCode nvarchar(10),
@Address nvarchar(80),
@City nvarchar(20),
@State nvarchar(20),
@Country nvarchar(10)
as

UPDATE Customers SET FirstName=@FirstName , LastName=@LastName , PhoneCode=@PhoneCode,
PhoneNumber=@PhoneNumber, MobileNumber =@MobileNumber , Fax = @Fax , Email = @Email

UPDATE postalInfo SET PostalCode =@PostalCode , Address = @Address,
City = @City , State = @State , Country = @Country

ali_habibi1384
یک شنبه 21 آبان 1391, 21:18 عصر
چونكه يه دستور Where و يك فيلد كليد كم گذاشتيد شما بايد بگيد مثلا فيلدي رو آپديت كن كه id مثلا 1 باشه. اينو درست كنيد مشكل حله

ah.amir
یک شنبه 21 آبان 1391, 22:02 عصر
چونكه يه دستور Where و يك فيلد كليد كم گذاشتيد شما بايد بگيد مثلا فيلدي رو آپديت كن كه id مثلا 1 باشه. اينو درست كنيد مشكل حله

باز هم ممنونم ازت دوست عزیز.
درسته اون وقت زمانی که این کار رو انجام دادم توی application چطور مشخص کنم که تغییرات صورت گرفته بر روی رکورد مورد نظر که در gridview انتخاب شده به دیتا بیس منتقل بشه. باید where رو parametric کنم؟؟

ah.amir
دوشنبه 22 آبان 1391, 20:32 عصر
باز هم ممنونم ازت دوست عزیز.
درسته اون وقت زمانی که این کار رو انجام دادم توی application چطور مشخص کنم که تغییرات صورت گرفته بر روی رکورد مورد نظر که در gridview انتخاب شده به دیتا بیس منتقل بشه. باید where رو parametric کنم؟؟


دوستان عزیز ممنون میشم اگر راهنمایی کنید