PDA

View Full Version : نمایش فیلدهای 2 یا چند Table در DataGrid



یاسر بیرقی
چهارشنبه 12 مرداد 1384, 17:47 عصر
با سلام خدمت تمامی دوستان.
چه طوری میشه که در یک DataGrid اطلاعات فیلدهای چند Table که با هم Relation دارند را برقرار کرد.
من از یک dataset استفاده میکنم که سه تا از Table ها باید اطلاعاتشون را (از هر Table تعدادی از فیلدها ) نشون بدم . DataSource برای DataGrid به DataSet ست شده ولی در قسمت ،TableStyles با اینکه فیلدامو انتخاب میکنم ولی جواب نمیگیرم . لطفا راهنمائیم کنید.

یاشار
چهارشنبه 12 مرداد 1384, 18:29 عصر
وقتی که چند تا جدول رو از دیتابیس در یک دیتاست می‌ریزید، رابطه جدول‌ها به صورت خودکار تنظیم نمی‌شن. یا باید به صورت گرافیکی، رابطه رو در دیتاست ایجاد کنید ( با ویرایش فایل xsd. دیتاست ) یا قبل از اینکه دیتاست رو Fill کنید، با استفاده از کدنویسی و خاصیت dsnam.Relations.Add ، رابطه مورد نظرتون رو ایجاد کنید. بعد وقتی که دیتاست رو به گرید بایند کنید همه چیز درست نشون داده می‌شه.

برای جزییات بیشتر (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaddingrelationshipbetweentwotables.asp)

یاسر بیرقی
پنج شنبه 13 مرداد 1384, 09:56 صبح
از راهنمایی شما بسیار ممنونم.
ولی من این کارها را انجام داده ام ، Table ها با همدیگر join هستند. ولی من چطور اطلاعات فیلدهای مختلف از Table های مختلف را با Header Text فارسی نمایش بدم.

یاشار
پنج شنبه 13 مرداد 1384, 15:40 عصر
اشکالتون تو نمایش رابطه‌هاست یا فارسی نویسی ؟
منظورتون از Header Text چیه؟ نام ستون یا caption مربوط به DataGrid ؟

پ.ن : با یک نگاه به Style متوجه شدم منظورتون چیه. به پست اول دقت نکرده بودم.

من در مورد فارسی نویسی خاصیت HeaderText مربوط به ColumnStyle مشکلی ندارم. مطمئن هستید که فرم رو به صورت یونیکد ذخیره می‌کنید ؟ ضمنا MappingName مربوط به TableStyle و ColumnStyle رو هم چک کنید.

یاسر بیرقی
شنبه 15 مرداد 1384, 12:14 عصر
با سلام خدمت شما و تشکر از پاسخ شما.
ظاهرا من سوال خودم را به صورت صحیح مطرح نمیکنم .
ببینید من سه تا Table دارم که یکی اطلاعات نام و نام خانوادگی دیگری اطلاعات پرسنلی و یکی هم اطلاعات سوابق درسی را برای یک شخص ذخیره میکنند که Table ها با هم join هستند . من میخوام اطلاعات 3 table را با هم در یک گرید نمایش دهم ولی نتونستم . با تشکر

یاشار
شنبه 15 مرداد 1384, 14:28 عصر
شاید هم من سوال شما رو درست متوجه نمی‌شم.

من ساختار دیتابیس و رابطه بین جدول‌های شما رو نمی‌دونم. ولی تا جایی به که نمایش اونها در گرید مربوط می‌شه فکر می‌کنم مثال زیر بهتون کمک کنه. کافیه رابطه‌ها رو به صورت کدنویسی یا گرافیکی در دیتاست مشخص کنید ( اینجا از کد استفاده شده ) و جدول اصلی رو به گرید بایند کنید. از اونجا به بعدش رو گرید خودش می‌دونه چکار کنه.

یاسر بیرقی
شنبه 15 مرداد 1384, 14:48 عصر
خوب در همین حالت اگر بخواهیم در data grid بعد از نام و نام خانوادگی Field های Table اطلاعات پرسنلی و سابقه تحصیلی ... به صورت خودکار در کنار این دو Column (نام و نام خانوادگی) نمایش دهد چه کار کنم .

یاشار
شنبه 15 مرداد 1384, 17:52 عصر
در اینصورت شما در واقع می‌خواهید یک جدول در دیتاگرید نمایش داده بشه، و اطلاعات این جدول از سه جدول دیگه از دیتابیس تامین میشه. اگر منظورتون رو درست فهمیده باشم، به نظر من بهترین روش اینه که در سطح دیتابیس یک View درست کنید که اطلاعاتشو از این سه جدول میگیره و «یک» جدول رو نمایش بدید.

یاسر بیرقی
یک شنبه 16 مرداد 1384, 10:43 صبح
با سلام و خسته نباشید خدمت تمامی دوستان.
راستشو بخواین من این کار را کرده بودم . یعنی در Data Base ام یک View ساختم از چند Table . داخل برنامم Data Grid به این View متصل می شه . ولی یه اشکالی وجود داره .!!!!!!!!!!!!!!
من هم باید View را داخل data set ام Fill کنم هم Table ها . تازه وقتی Data ها ویرایش یا حذف یا اضافه بشن ، هم Table ها باید تغییر کنن هم View (چون باید نمایش داده بشن) که کارهای الکی زیادیه.!!!!
مطمئنم یه جای کار میلنگه . برای همین خواستم بدونم میشه یه چیزی مثل View داخل Data Set ساخت که اولا با اون بتونم با Data Grid نمایش بدم ، ثانیا با ویرایش Data داخل Table این View خودش تغییرات را نشون بده . با تشکر ........

gh_fereydonpoor
یک شنبه 16 مرداد 1384, 11:26 صبح
سلام به دوستان
من هم این مشکل را دارم ولی سوال من این است
که من می خواهم که زمانی که روی + کلیک می شود به جای لینک خود اطلاعات و فیلدها نمایش داده شود
در مورد مشکل دوستمون هم ، نه لازم نیست که هم View را Fill کنید و هم Table رو بلکه کافیه View رو Fill کنید زیرا که کلیه اطلاعات را در View استخراج کرده اید.

یا علی
مرسی ممنون

یاسر بیرقی
یک شنبه 16 مرداد 1384, 12:46 عصر
با سلام
آقای فریدون پور ، ولی اینکار از یعنی جدا کردن table از view سخت تر از fill کردن table ها و ....
تازه فکر میکنم view اکثرا برای نمایشه تا کارهای Insert , Edit و ....

یاشار
یک شنبه 16 مرداد 1384, 12:57 عصر
همونطور که دوستمون اشاره کردن لازم نیست دیتاست شامل جدول‌های منبع هم باشه. شما یک View «در سطح دیتابیس» درست کنید که عبارت Select ش از چند جدول استفاده می‌کنه. علت اینکه روی دیتابیس تاکید می‌کنم اینه که در ToolBox/Data هم یک DataView هست که در سطح دیتاست View درست می‌کنه که به بحث ما ربطی نداره.

وقتی این View رو از داخل ServerExplorer روی فرمتون Drag کنید، بهتون یک DataAdapter می‌ده که درست مثل یک جدول جداگانه رفتار می‌کنه. اگر از روی این View یک دیتاست بسازید، دیتاست شامل یک جدول خواهد بود که همون ستون‌هایی که شما می‌خواهید رو نشون خواهد داد و اگر مقادیر رو عوض کنید، تغییرات در جدول منبع اعمال خواهند شد. اشکالی که باقی‌ می‌مونه اینه که اگر عبارت Select از یک حدی پیچیده‌تر باشه، ADO.Net نمی‌تونه عبارت‌های Update و Delete رو به صورت خودکار تولید کنه، که شما باید دستی اینها رو وارد کنید.

در مورد اینکه به جای لینک خود اطلاعات و فیلدها نمایش داده شود، فکر نمی‌کنم همچین کاری با گرید استاندارد VS امکان پذیر باشه. شما باید دنبال کنترل‌های متفرقه باشید.

gh_fereydonpoor
دوشنبه 17 مرداد 1384, 08:16 صبح
ممنون مرسی
در مورد اینکه View قابل Edit نیست که منتفی است چون شما می توانید این کا رو انجام دهید
یا علی