PDA

View Full Version : مشکل با ستون های طراحی شده در زمان طراحی



behzadk
دوشنبه 24 فروردین 1388, 19:53 عصر
با سلام
اینو دوستام گفتن که در سایت است ولی من جستجو کردم نتونستم پیدا کنم و اگر تکراری بود از دوستان خواهش می کنم که این تاپیک رو پاک نکند
من در زمان طراحی ستون های datagridview رو ایجاد می کنم و در زمان اجرا وقتی datagridview.datasource=dataset.table[0]; رو اجرا می کنیم خودش دو باره ستون اضافه میکنه و وقتی allowaddcolumn =false می کنیم اصلا داده ها نشان داده نمی شوند مشکل از کجاست ؟
با تشکر

pesare_ariyayi
دوشنبه 24 فروردین 1388, 20:15 عصر
حالت نرمال اینه که تو زمان طراحی, datasource ی data grid view رو مساوی dataset.table کنید (تا مقدار ستونهای data grid با مقادیر ستونها در dataset.table مقدار دهی اولیه بشه), بعد از اون توسط کد نویسی قبل از نوشتن

datagridview.datasource=dataset.table[0];
dataset.table رو fill کنید.

behzadk
دوشنبه 24 فروردین 1388, 20:45 عصر
با تشکر از راهنمایی شما
تو هیچ یک از اونا مشکلی ندارم فقط من می خوام ستون هایی که در زمان اجرا ایجاد نشه و بر روی ستون هایی که در زمان طراحی ایجاد شده پیاده سازی بشه در ضمن من از کنترل dataset استفاده نمی کنم من از dataset dset =new datset استفاده می کنم و وقتی که در زمان طراحی dataset ی وجود ندارد چگونه set کنم ؟؟؟؟؟؟؟!!!!!!.......

pesare_ariyayi
دوشنبه 24 فروردین 1388, 21:15 عصر
خوب ستونها رو به ستونهای متناظر datasource یا dataset بایند (bind) کن. متئسفانه الان تازه ویندوز عوض کردم و ویژوال استودیو رو هنوز نصب نکردم, اما فکر کنم همچین چیزی باشه:

datagridview.XColumn.bindingSource=bindingSource.C olumnX

behzadk
سه شنبه 25 فروردین 1388, 17:27 عصر
با تشکر از راهنمایی شما اما یه چنین چیزی نیست!؟!؟!؟..؟

behzadk
سه شنبه 25 فروردین 1388, 18:16 عصر
خواهش می کنم یکی جواب بده

NewFoxStudent
سه شنبه 25 فروردین 1388, 18:21 عصر
شما میخواهید ستونها رو در زمان طراحی بسازید و در زمان اجرا جدولی رو که به عنوان DataSource به Grid میدید در همون ستون ها نمایش داده بشه اگه منظورتون رو درست فهمیدم بگید تا براتون توضیح بدم

behzadk
سه شنبه 25 فروردین 1388, 19:09 عصر
کاملا درست فهمیدی
با تشکر فراوان

rnm123
سه شنبه 25 فروردین 1388, 19:27 عصر
دوست عزیز من هم چنین مشکلی در برنامه ام داشتم که برای حل اون ستونهای اضافه شده در زمان طراحی را حذف کردم و گذاشتم خودبرنامه در زمان اجرا ستونها را اضافه کند که برنامه خیلی خوب هم کار کرد و مشکلی پیش نیامد تنظیمات اونها را هم که میتونی به راحتی در زمان طراحی انجام بدی . این کار فکر کنم راحتتره البته اگر راهی برای بایند کردن ستونها به داده های ورودی زمان اجرا باشد من بلد نیستم و خوشحال میشم از دوستانی که این روش را بلد هستند یاد بگیرم.

behzadk
سه شنبه 25 فروردین 1388, 19:37 عصر
من خودم این کار رو می کردم ما تعداد ستون ها زیاد است و در زمان کد نوشتن زمان زیاد می بره و از طرفی تعداد datagrid ها زیاد است و از طرفی دیگر اگر بخواهیم کاملا userfriendly بکنیم ما باید یه نیم ساعتی فقط زمان صرف این کار ها بکنیم که اصلا مقرون به صرفه نیست

NewFoxStudent
چهارشنبه 26 فروردین 1388, 09:16 صبح
ابتدا ستونهایی رو که میخواهید در گرید قرار بدید
بعد خاصیت DataSource گرید رو به جدول مورد نظر ست کنید
حالا پنجره مربوط به Edit Columns رو باز کنید و ستونهایی رو که خود VS به Grid اضافه کرده Remove کنید
و در نهایت خاصیت DataPropertyName ستونهایی رو خودتون طراحی کردید با فیلدهای جدول ست کنید
موفق باشید

newgoogle
دوشنبه 11 خرداد 1388, 01:59 صبح
daagrdview.autgeneratecolumns=false

AmirAlimadadi
چهارشنبه 10 تیر 1388, 11:21 صبح
ابتدا ستونهایی رو که میخواهید در گرید قرار بدید
بعد خاصیت DataSource گرید رو به جدول مورد نظر ست کنید
حالا پنجره مربوط به Edit Columns رو باز کنید و ستونهایی رو که خود VS به Grid اضافه کرده Remove کنید
و در نهایت خاصیت DataPropertyName ستونهایی رو خودتون طراحی کردید با فیلدهای جدول ست کنید
موفق باشید

ممنون از راهنماییتون، اما چه طوری می شه جلوی تولید ستون در زمان اجرا رو گرفت، یعنی نذاریم، در زمان اجرا ستونی به ستونهای موجود اضافه بشه، دوستان گفتن که فیلد AutoGenerateMember و یا چیزی شبیه به اون رو باید عوض کنیم، اما من هر چی گشتم چیزی پیدا نکردم

AmirAlimadadi
چهارشنبه 10 تیر 1388, 16:02 عصر
کسی نیست که بدونه

Mahdi.Kiani
چهارشنبه 10 تیر 1388, 17:51 عصر
سلام
ابتدا ستون های خود را در زمان طراحی ایجاد کنید./
هر ستون دارای یک خاصیت به اسم DataPropertyName می باشد که آن را برابر با نام هر فیلدی که می خواهید اطلاعات آن فیلد در آن قرار گیرد تنظیم کنید./
مثلا اگر جدولی دارید که یک ستون آن به اسم Family می باشد، یک ستون در دیتاگرید ویو ایجاد کرده و سپس مقدار خاصیت DataPropertyName را برابر با Family قرار دهید./ در این صورت مقادیر فیلد Family در این ستون قرار می گیرند./
دقت کنید که این فقط مخصوص فیلد های جدول در دیتابیس نیست. در واقع شما می توانید هر Property از هر آبجکتی را به خاصیت DataPropertyName ستون دیتاگرید ارتباط دهید./

مثلا اگر کلاسی به نام Person داشته باشید و درون آن فیلدهای Idو Name و Family داشته باشید، می توانید سه ستون در دیتاگرید ایجاد و خاصیت DataPropertyName آن ها را برابر با Id، Name و Family قرار دهید. حال زمانی که لیستی از Person ها را به دیتاگرید بایند کنید، اطلاعات هر فیلد در ستون مورد نظر قرار می گیرد./

یک مثال ضمیمه است./



در مورد اینکه ستون ها به صورت اتوماتیک به دیتاگرید اضاف نگردد، کافی است که کد زیر را بنویسید :



[datagridView Name].AutoGenerateColumns=false;

مثالی که ضمیمه کردم لیستی از Person را به دیتاگرید بایند می کنه./ اگر کد نوشته شده در رویداد لود فرم برداشته شود، فیلد Phone از کلاس Person نیز به صورت اتوماتیک به دیتاگریدویو اضافه می گردد./
موفق باشید./