PDA

View Full Version : ویرایش نشدن فیلد کلیداصلی جدول



mortex3000
یک شنبه 06 مهر 1393, 00:14 صبح
سلام دوستان
من میخواستم اطلاعات گریدویو رو تو تکست باکس ها بریزم و بعد ویرایش کنم ، همه کارها خوب پیش میره ولی فیلد مربوط به کلیداصلیم که از نوع int هست تغییری درونش ایجاد نمیشه.
کدهای من جهت ویرایش بصورت زیر هست:



protected void btnInsertDore_Click(object sender, EventArgs e)
{
string sql_update = @"UPDATE [tb_dore]
SET id=@id , title=@title
WHERE id=@id";
SqlCommand cmd = new SqlCommand(sql_update, con);
SqlParameter a1 = new SqlParameter("id", Convert.ToInt32(GridView1.SelectedRow.Cells[0].Text));
SqlParameter a2 = new SqlParameter("title", txtTitle.Text);
cmd.Parameters.Add(a1);
cmd.Parameters.Add(a2);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
GridView1.DataBind();
}

لطفا راهنمایی کنید.

mortex3000
یک شنبه 06 مهر 1393, 12:07 عصر
دوستان کسی نیست پاسخ بده؟!

iceweek
دوشنبه 07 مهر 1393, 13:14 عصر
خوب ارورش چیه؟
احتمالا کلید خارجی روی این کلیدت وجود داره که نمیگذاره
در ضمن 99 درصد منطق کارت ایراد داره که توی نرم افزارت کلید اصلی عوش میکنی

پیام حیاتی
دوشنبه 07 مهر 1393, 15:11 عصر
سلام
کللید اصلی رو تغییر بدید!
اگر تنظیمات فیلد هم auto کرده باشید امکان تغییر وجود نداره.

moferferi
دوشنبه 07 مهر 1393, 15:28 عصر
از کی تاحالا کلید اصلی را ویرایش میکردن؟:متفکر:

Davidd
دوشنبه 07 مهر 1393, 15:52 عصر
اول اينكه هنگام add كردن پارامترها از @ استفاده نكردي.
مشكل دوم هم اينه كه شما گفتي كاربر اطلااعات داخل تكس باكس ويرايش ميكنه پس بايد يه تكس باكس براي id داشته باشي. اگه به كد نگاه كني اصلا از اين تكس باكس استفاده نكردي! خب معلومه كه ويرايش نميشه. شما بايد دو تا پارامتر id داشته باشي مثلا @id_new و @id_old . پارامتر @id_new اوني كه كاربر در تكس باكس وارد ميكنه و پارامتر @id_old مقدار قبل از ويرايش هست كه در ديتاگريدويو وجود داره. كوئري به اين صورت ميشه:
string sql_update = @"UPDATE [tb_dore] SET id=@id_new , title=@title

WHERE id=@id_old";