PDA

View Full Version : TableStyles



فاطمه هاشمیان
چهارشنبه 31 فروردین 1384, 17:32 عصر
سلام
من یک DataGrid با چند Tablestyles ایجاد کرده ام ام می خوام در یک زمان خاص( مثلا" فشردن یک Button )فقط یکی از این TableStyle ها در DataGrid فعال باشد برای این کار باید از چه دستوری استفاده کنم .؟؟
با تشکر

یاشار
چهارشنبه 31 فروردین 1384, 18:09 عصر
شما نمی‌تونید style رو توی datagrid ابتدا به ساکن تغییر بدید. کاری که شما میتونید بکنید اینه که چند view مختلف برای اطلاعاتی که دارید تعریف کنید و بعد برای هر view یک style جداگانه تنظیم کنید. هر بار که می‌خواهید طرز نمایش اطلاعات تغییر کنه، datagrid رد به view دلخواه bind کنید.

فاطمه هاشمیان
جمعه 02 اردیبهشت 1384, 11:54 صبح
منظورتون رو متوجه نشدم
میشه با Code توضیح بدید من با Access کار میکنم و Query(View( های مجزا ایجاد کردم اما نمدونم چه جوری در زمان اجرا TableStyle رو تغییر بدم

فاطمه هاشمیان
شنبه 03 اردیبهشت 1384, 00:45 صبح
کسی نمیدونه ؟

یاشار
شنبه 03 اردیبهشت 1384, 20:26 عصر
منظور من dataview بود که توی toolbox/data هست. یعنی یک بار شما از دیتا بیس اطلاعات رو داخل یک دیتاست توی حافظه می‌ریزید، بعد بوسیله dataview می‌تونید همون اطلاعات رو به روش‌های متفاوت نمایش بدید.

حالا اگر از Query View استفاده می‌کنید باید اطلاعاتی رو که گرفتید داخل یک دیتاست جداگانه بریزید. اگر از همون دیتاست اولیه استفاده کنید و بخواهید چند جدول با هم در یک دیتاست داشته باشید، ویژوال استودیو نمی‌تونه کد مربوط به update رو بصورت خودکار ایجاد کنه و باید دستی اونها رو بنویسید که یه کم دردسر سازه.

در هر صورت باید چند TableStyle ایجاد کنید و برای هر کدوم Mapping Name جداگانه تعریف کنید که در مورد مثال ما، همون اسم جدولیه که باید با این style نشون داده بشه.

هنگام اجرا، وقتی که می‌خواهید style رو عوض کنید کافیه Mapping Name رو به عنوان پارامتر به TableStyles رد کنید.



DG1.TableStyles["Customers"];

اگر یک مقدار بیشتر راجع به ساختار دیتابیس تون توضیح بدید احتمالا بتونم بیشتر کمکتون کنم، چون بسته موقعیت، روش‌های مختلف به کار میره. شخصا ترجیح میدم از Quert View استفاده نکنم. مگر اینکه اطلاعات Query View از جدول‌هایی گرفته شده باشه که توی دیتاست اصلی برنامه نباشه.

فاطمه هاشمیان
یک شنبه 04 اردیبهشت 1384, 17:30 عصر
سلام
از توجه شما ممنونم
ساختار DataBase خودم رو اگه بخوام بگم طولانی میشه اما اصل کاری که میخوام انجام بدم اینه مثلا" من یک DataBase دارم با 2 تا جدول یکی جدول مربوط به حسابها و یکی مربوط به تماسها دارم و 2 تا Button و یک DataGrid روی Interface برنامم گذاشتم و DataGrid من شامل 2 تا TableStyle است یکی از TableStyle ها فیلدهای مربوط به حسابها رو داره و یکی فیلدهای مربوط به تماسها حالا میخوام با فشار دادن Button1 محتویات جدول حسابها توی DataGrid نمایش داده بشه و با فشار دادن Button2 محتویات جدول تماسها توی DataGrid نمایش داده بشه (یعنی با فشار دادن Button ها TableStyle از DataGrid من تغییر کنه ) من از DataView برای Query گرفتن استفاده میکنم اما مشکل من اینه که TableStyle از DataGrid رو چه جوری در حین اجرای برنامه تغییر بدم این دستور رو هم می نویسم ام Error میده که این ساختار به عنوان یه دستور نمیتونه مورد استفاده باشه :

;["MainDataGrid.TableStyles["TelephonDataGridtbl

دستور زیر هم هیچ تغیری تو نمایش TableStyle از DataGrid ایجاد نمیکنه :

;"MainDataGrid.TableStyles[1].MappingName = "Telephon_tbl

دیگه نمیدونم باید از چه دستوری استفاده کنم :گیج: :sad2:

یاشار
سه شنبه 06 اردیبهشت 1384, 18:49 عصر
اگر می‌خواهید محتویات دو تا جدول جدا از هم نمایش داده بشه اصلا احتیاجی به Style ندارید. با فرض اینکه هر دو تا جدول رو در دیتاست Fill کرده باشید، کافیه خاصیت DataMember مربوط به DataGrid رو به جدول مورد نظرتون تغییر بدین



private void button1_Click(object sender, System.EventArgs e)
{

DG1.DataSource = DataSet1;
DG1.DataMember = DataSet1.Tables["tblTamaas"].TableName;
}

private void button2_Click(object sender, System.EventArgs e)
{

DG1.DataSource = DataSet1;
DG1.DataMember = DataSet1.Tables["tblHesaab"].TableName;
}


تا اینجا تونستیم محتویات جدول‌های مختلف رو توی یک دیتاست واحد نمایش بدیم.

حالا اگر نخواهید که جدول‌ها به همون شکلی که در دیتاست هستند نمایش داده بشند، باید دوتا TableStyle تعریف کنید که MappingName شون با اسم جدولهاتون مطابق باشه. فراموش نکنید که برای هر TableStyle باید چندتا GridColumStyle مشخص کنید که MappingName اونها هم باید برابر با ستون های مربوط به جدولی که TableStyle براش تعریف میشه، باشن.

اگر اینها رو درست تعریف کنید هر بار که DataMember رو عوض میکنید، اطلاعات به صورت Style متناظر با هر جدول نمایش داده میشن. (خواستم بنویسم به طور اتوماتیک ولی دیدم خیلی هم اتوماتیک نیست!)

:oops:


این لینک هم که به طور مفصل طرز سفارشی کردن دیتاگرید رو توضیح داده شاید به دردتون بخوره، ولی مشخصا مربوط به TableStyle نیست.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwinforms/html/wnf_CustDataGrid.asp

فاطمه هاشمیان
سه شنبه 06 اردیبهشت 1384, 21:58 عصر
از کمک شما ممنونم من DataSource رو درست set نمیکردم بعدش خودم متوجه شدم :oops:
ولی بازم از راهنمایی شما ممنونم