PDA

View Full Version : سوال: خطا در FindControl



khorsandreza
چهارشنبه 24 تیر 1388, 21:08 عصر
دوستان سلام
میتونن بگید این خطا از چیه
تصویر را ببنید:ناراحت:
توصیح:
من یک تمپلت گرید ویو دارم در ان از تکست باکس استفاده شده حالا یکی از تکست باکس تغییرات میدم وقتی میخواهم ذخیره کنم این خطا را میگیره

iman_22a
پنج شنبه 25 تیر 1388, 14:08 عصر
سلام . دوست عزیز ، پیدا کردن یک TextBox توی یک Gridview نباید به این راحتی باشه که شما انجام دادین .
این بخش کد که خطا میده توی چه رویدادی قرار داره ؟

khorsandreza
پنج شنبه 25 تیر 1388, 14:17 عصر
همانطور که در تصویر است مو قع ذخیره اطلاعات خطا میگیره موقع کامپایل مشکل نیست

explod_javad
پنج شنبه 25 تیر 1388, 14:28 عصر
دوست من شما باید کدهای مربوط به پیدا کردن کنترل را توی Try بزاری
علتش هم این هست که وقتی یک دیتا گرید بایند میشه ، Item مربوط به هدر و فوتر هم بایند میشن.
قبل از ریختن اطلاعات توی تمپلت ، میاد هدر رو فراخوانی میکنه.
چون توی هدر کنترلی که شما در حال Find اون هستی وجود نداره ، خطا میده.
وقتی آخرین Row هم ایجاد شد ( در آخر) برای فوتر هم همین مسئله رخ میده.
وقتی کدها رو توی Try بزاری خود به خود مشکلت حل میشه.
شاید توضیحم کامل نباشه ولی امتحان بکن !

khorsandreza
پنج شنبه 25 تیر 1388, 15:14 عصر
دوست من شما باید کدهای مربوط به پیدا کردن کنترل را توی Try بزاری
علتش هم این هست که وقتی یک دیتا گرید بایند میشه ، Item مربوط به هدر و فوتر هم بایند میشن.
قبل از ریختن اطلاعات توی تمپلت ، میاد هدر رو فراخوانی میکنه.
چون توی هدر کنترلی که شما در حال Find اون هستی وجود نداره ، خطا میده.
وقتی آخرین Row هم ایجاد شد ( در آخر) برای فوتر هم همین مسئله رخ میده.
وقتی کدها رو توی Try بزاری خود به خود مشکلت حل میشه.
شاید توضیحم کامل نباشه ولی امتحان بکن !

من در بایند کذدن مشکل ندارم مشکل این است مقدارهای تکست باکس را که تغییر میدهم نمیتوانم به ان مقدارها دسترس پیدا کرده و در بانک ذخیره کنم و فرمودید که دستورات را داخل try قرار دهم این کار صرفا برای کنترل خطاست و در دسترسی به مقدار های تکست باکس تاثیر ندارد

explod_javad
پنج شنبه 25 تیر 1388, 15:50 عصر
توی تصویری که شما قرار دادی ، مشکل از پیدا کردن کنترل داخل تمپلت هست.
وقتی پیدا نکنه چطور شما میخاید به مقدار اون دسترسی داشته باشی.
با این حال شما کدهایی که مینویسی رو تحت عنوان یک sample بزار ، اگه تونستم کمکت کنم.

khorsandreza
پنج شنبه 25 تیر 1388, 16:06 عصر
سورس کامل صفحه

explod_javad
پنج شنبه 25 تیر 1388, 16:32 عصر
توی کدهایی که نوشتی master چیه ؟


TextBox TextBox_3 = (TextBox)Master.FindControl("TextBox3");
param = new SqlParameter("@s_card", TextBox_3.Text);
com.Parameters.Add(param);

حالا ببین من درست میگم.
شما میخای اطلاعاتی که موقع زدن کلید ویرایش در گرید ، توی Text Box ها نوشتی را توی رویداد GridView1_RowCommand دریافت کنی و در دیتا بیس ذخیره کنی.
اگه اینجوری باشه ، نظر من این هست :
در رویداد GridView1_RowCommand شما ، شماره Row که روش داری مشخصات را ویرایش میکنی(اگه تعداد سطر ها بیشتر از یکی باشه) استخراج میکنی.
سپس تایع savedate را که شماره سطر هم بعنوان متغیر هست ، صدا میزنی
سپس کد پیدا کردن کنترل موجود در تمپلت رو هم به شکل زیر بزار:


TextBox TextBox_3 = (TextBox)Gridview1.Rows(Row_Number).FindControl("TextBox3");

roeNumber شماره سطری که درحال ویرایش اون هستی
اگه تعدادسطر فقط یک هست میتونی بجاش 0 وارد کنی
مشکل شما فقط عدم یافتن کنترل هست.
حلا امتحان بکن.

khorsandreza
پنج شنبه 25 تیر 1388, 17:04 عصر
Master
فکر کنم معادل دستور this است