PDA

View Full Version : Index was out of range. Must be non-negative and less than the size of the collection. Parameter na



Elmira1987
سه شنبه 25 خرداد 1389, 10:30 صبح
با سلام ...
من يه گريد ويو دارم كه توي رويداد userDeletingRow اون كد نوشمكه وقتي يه سطر رو انتخاب مي كنم اون رو حذف كنه . ولي الان error ميده ................

Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

M.YasPro
سه شنبه 25 خرداد 1389, 10:36 صبح
سلام
این ارور برای زمانی هست که شما ایندکسی از یک مجمو عه رو صدا میزنید که وجود نداره
حالا کدتون رو ببینید که شاید یه سطری از گرید رو صدا می زنید که وجود نداره
موفق باشید .

safa.net
جمعه 08 آذر 1392, 01:04 صبح
کسی هست بیشتر در مورد این خطا توضیح بده؟

dashkeyvan
جمعه 08 آذر 1392, 01:58 صبح
دوست عزیز باید id اون سطر که باید کلید باشه رو بگیری بریزی تو یه متغییر پابلیک بعد بگی او سطری که idیش برابر با این متغییره رو حذف کن ارور ماله زمانی هستش که مقداری در پارامتر ریخته نشده یا ریخته شده عدد عجیب غریبیه....
مثلا من خودم در متد زیر متغییر رو تعریف کردم

public partial class Delete_Question : Form
{
public int memberid_delete;
.
.
.
.}


بعد تو فرمی که grid توش هست تو رویداد کلیک دکمه حذف اینو نوشتم

Delete_Question_Form dq = new Delete_Question_Form();
dq.memberid_delete = Convert.ToInt32(grd_view_member.SelectedRows[0].Cells["id"].Value);


بعد تو فرمی که ازم میپرسه میخوام پاک کنم یا نه اینو نوشتم


SqlCommand cmd = new SqlCommand("DeleteMember", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@id", memberid_delete);
con.Open();
cmd.ExecuteNonQuery();
con.Close()



خلاصه یه جوری باید مقدار فیلد کلیدت رو تو یه متغیر نگه داری اگه داری از چند فرم استفاده میکنی