PDA

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



afaghmoh
یک شنبه 13 آذر 1384, 22:01 عصر
با عرض سلام خدمت همه بزرگواران
من چندین سوال دارم که از همه شما ممنون می شوم کمکم کنید
1- من چندین جدول در بانکم دارم که دراین جدولها اطلاعات اشخاص ذخیره می شود بین این جدولها ارتباط یک به چند وجود دارد و یک فیلد دارم که در جدول اصلی کلید است (جدول اطلاعات شخصی افراد)و در بقیه جدولها یک فیلد عادی است و دراین جدولها کلید نمی خواهم و اطلاعات جانبی افراد ذخیره می شود مثلا مدارک تحصیلیش که هر کدام در یک رکورد قرار میگیرند اکنون می خواهم اطلاعات این افراد را در دیتاگرید ویرایش کنم اما وقتی دستور ویرایش را انجام می دهم تمامی رکوردهای مربوط به این شخص به صورت رکورد ویرایش شده در می آیند یعنی همه مثل هم می شوند نمی دانم در دستور ویرایش زیر چه تغییری اعمال کنم و چه شرطی بگذارم که همان رکورد انتخاب شده تغییر کند
str = "update t2 set b2=@b2 ,b3=@b3, b4=@b4 ,b5=@b5, b6=@b6 ,b7=@b7 ,b8=@b8 "
2- چطور می توانم اندازه دیتا گرید و ستونهایش در حین جرای برنامه ثابت نگه دارم و بسته به اندازه اطلاعات خانه ها بزرگ و کوچک نشوند
3- چطور می توانم اندازه تکست باکسی را که از طریق کدنویسی ایجاد کرده ام بزرگ و کوچک کنم هر چه می نویسم ایراد می گیرد.

afaghmoh
دوشنبه 14 آذر 1384, 12:07 عصر
لطفا جواب دهید کارم گیر است

Behrouz_Rad
دوشنبه 14 آذر 1384, 19:35 عصر
1) رکورد مورد نظر در DataGrid که به عنوان رکورد جاری برای ویرایش در نظر گرفته شده، باید به طریقی تشخیص داده بشه.
این عمل تشخیص، با استفاده از فیلد کلید رکورد انجام می پذیرد.
با استفاده از خاصیت DataKeyField، فیلد مورد نظر را به عنوان فیلد کلید برای رکوردهایی که در دیتا گرید نمایش داده می شوند مشخص می کنید و با استفاده از خاصیت DataKeys، رکورد جاری را تشخیص می دهید.


Dim intID As Int32 = myDataGrid.DataKeys( e.Item.ItemIndex )

در دستور فوق، متغیر intID محتوی مقدار فیلد کلید رکورد در حالت ویرایش است که با گذاشتن این مقدار در جلوی شرط Where، تنها رکورد در حالت ویرایش آپدیت خواهد شد.

2) متن ها قابلیت پنهان شدن ندارند. پس اگر شما حتی طول یک فیلد را به "صفر" تنظیم کنید، باز هم ستون شما به اندازه ی طول بیشترین آیتم موجود در ستون، کش خواهد آمد.
البته می توانید قابلیت Wrap را به متن های موجود در سلول ها اضافه کنید که باعث می شود کلمات، در صورتی که از اندازه ی تعیین شده برای ستون بیشتر بودند، به سطر بعد انتقال پیدا کنند.
تعیین طول ستون در دیتا گرید به شکل زیر است:


DataGrid1.Items(0).Cells(0).Width = New Unit(100, UnitType.Pixel)

فراموش نکنید که دستور فوق "حتما" باید بعد از فراخوانی متد DataBind کنترل دیتاگرید استفاده شود چون قبل از Binding، رکوردی در دیتاگرید وجود ندارد که قصد انتساب مقدار به ستون آن را داشته باشیم.

3) احتمالا به شکل ساده (نسخه های پیشین VS) مقداردهی می کنید.
سینتکس صحیح به شکل زیر است:


TextBox1.Width = New Unit(100, UnitType.Pixel)

موفق باشید.