PDA

View Full Version : سوال: نوع ارتباط datagridview به دیتابیس



hahaie
یک شنبه 01 آذر 1394, 11:14 صبح
سلام دوستان
یه پروژه خیلی مهم برای سر کار دارم انجام میدم که از روش linq استفاده میکنم که اومدم یه dataclasees ایجاد کردم و تمام ویوها،توابع و پروسیجرهای توی دیتابیسم رو آوردم توی اون.
حالا توی مثلا فرم "کاربران" یه گرید ویو بالای فرم گذاشتم که زیرش به تعداد فیلدها textbox و پایینتر دکمه های مربوط به "رکورد جدید" یا "حذف رکورد".
گرید هم اینطور پر میکنم که یه ویو توی دیتابیس ایجاد کردم و اون ویو رو توی سی شارپ(که داخل dataclasses آوردم)قرارش دادم توی پروپرتی datasource از گرید.
حالا مشکلم اینه که وقتی رکورد جدیدی توی جدول با استفاده از همین فرم ایجاد میکنم و بعد از اون دوباره پروپرتی datasource را دوباره برابر همون ویو میذارم رکورد جدید توی ویو نمایش داده نمیشه در واقع گرید رفرش نمیشه.نمیدونم مشکل استفاده از ویو هستش؟؟؟
نکته اینکه اگه گرید رو به صورت ویزارد به جدول وصلش کنم و فقط همون کدی که توسط سی شارپ برا پر کردن گرید ایجاد میشه را بعد از دستورات مربوط به ایجاد رکورد جدید بیارم مشکلی نیس و رکورد جدید توی گرید هم نمتایش داده میشه ولی من نمیخوام از این روش استفاده کنم میخوام ویویی نوشته بشه و بعد اون ویو را به مشخصه datasource گرید بدم.
حالا کسی میتونه این مشکل عدم نمایش رکورد جدید یا حذف یک رکورد رو توی گرید رو راه حلشو بگه؟؟
ممنون میشم شدید نیاز دارم.
***ضمنا اگه بخواین علت اینکه چرا بطور ویزارد گرید رو به جدول وصل نمیکنم رو بدونید علتش اینه که این پروژه قراره توی شبکه پیاده بشه یعنی دیتابیس روی سرور و نرم افزار روی چند تا کلاینت.اتصال ویزارد از connectionstring استفاده میکنه و من هنوز راه حلی برای connection string توی شبکه وقتی دیتابیس روی سرور هست پیدا نکردم***
کاش یکی منو درست راهنمایی کنه!!!

Yanehsar
یک شنبه 01 آذر 1394, 15:20 عصر
سلام
بنده به شخصه اصلا ویزارد کار نمیکنم حالا برای اینکه راحتتر راهنمائی بشید بهتره دستورهای که برای پرکردن گریدویو و همچین اینسرت و نمایش مجدد پس از اینسرت رو بذارید تا بررسی کنیم اینطوری که کسی متوجه نمیشه
در ضمن بررسی کردید که آیا در دیتابیس تغییرات(اینسرت،حذف)اعمال میشه یا نه ؟

hahaie
یک شنبه 01 آذر 1394, 19:52 عصر
دوست عزیز الان به کدها دسترسی ندارم چیز خاصی هم نیست.دیتاسورس گرید رو برابر ویویی که توی dataclasses آوردم(از دیتابیس)قرار دادم.
درج رکورد یا حذف اون توی دیتابیس انجام میشه ولی حتی وقتی بعد از دستور درج رکورد دوباره دیتاسورس گرید رو برابر ویو قرار میدم رکورد جدید نشون داده نمیشه.توی ویو هم یه select معمولی روی جدول زدم همین.
فکر کنم باید به یه روشی dataclasses یا ویو رو refresh کرد....
حالا میتونید راهنمایی کنید؟؟؟

Yanehsar
یک شنبه 01 آذر 1394, 21:08 عصر
دوست عزیز الان به کدها دسترسی ندارم چیز خاصی هم نیست.دیتاسورس گرید رو برابر ویویی که توی dataclasses آوردم(از دیتابیس)قرار دادم.
درج رکورد یا حذف اون توی دیتابیس انجام میشه ولی حتی وقتی بعد از دستور درج رکورد دوباره دیتاسورس گرید رو برابر ویو قرار میدم رکورد جدید نشون داده نمیشه.توی ویو هم یه select معمولی روی جدول زدم همین.
فکر کنم باید به یه روشی dataclasses یا ویو رو refresh کرد....
حالا میتونید راهنمایی کنید؟؟؟
روش مختلفی هستش میتونید تابعی بنویسید و دستورات فرم لود رو داخل اون بذارید و هر چند بار خواستیت(بعد از درج،ویرایش،حذف)مجدد آن رو فراخوانی کنید .
یا میتونید فرم لود رو دوباره فراخونی کنید .
شاید هم ویوتون مشکل داشته باشه ببینید داخل جداول تغییرات انجام شده یا نه!!! بعد از اینکه جداولتون چک کردید ویو رو بررسی کنید ببین داخل ویو تمام رکوردها مطابقت داره و اومده؟