گاهی نیاز است تا گزینه های موجود در یک فرم به صورت یک Check Box List نمایش داده شود. به عنوان مثال فرمی با عنوان "گروه های کاری" داریم که وظیفه این فرم تعریف سطح دسترسی کاربران سیستم است. همچنین فرم دیگری با عنوان "کاربران سیستم" وجود خواهد داشت که وظیفه این فرم تعریف کاربران سیستم و تعیین میزان سطح دسترسی آنها است.
حال فرض کنید می خواهیم گروه های کاری تعریف شده در فرم "گروه های کاری" به صورت Check Box در فرم "کاربران سیستم" نمایش داده شوند و با فعال یا غیر فعال بودن آنها متوجه شویم که کدام یک از کاربران عضو کدام یک از گروه های کاری هستند.


برای انجام این کار نیاز است تا در فرم "کاربران سیستم" یک کنترل از نوع Check Box List ایجاد کرده و پس از آن تنظیمات و کد های مربوط به کوئری های آن را وارد کنید.

 

خصوصیات کنترل چک باکس لیست

کنترل Check Box List دارای چهار خصوصیت اصلی و مهم شامل Data Source، Fill Query، Delete Query و Update Query است که تکمیل نمودن آنها برای کارکرد صحیح این کنترل ضروری می باشد.

 

Data Source

خصوصیت Data Source اولین خصوصیت اصلی کنترل Check Box List است، که با توجه به کوئری وارد شده در قسمت Query Editor، اقلام اطلاعاتی مورد نیاز را از یک جدول در دیتابیس خوانده و هرکدام از رکورد های آن را به صورت Check Box نمایش می دهد.
برای کارکرد صحیح این خصوصیت نیاز است تا یک کوئری از نوع Select در قسمت Query Editor نوشته شود.
نحوه صحیح وارد نمودن کوئری در Query Editor برای خصوصیت "Data Source":

 

SELECT Table_Name.Column_Name
FROM Table_name

 

توجه داشته باشید که در این کوئری باید کلید اصلی (ID) رکورد و همچنین عنوان آن انتخاب شود.
در این مثال می توان از کد زیر در قسمت Query Editor خصوصیت "Data Source" استفاده نمود:

 

SELECT UserGroupList.UserGroup_ID,
UserGroupList.UserGroupName
FROM UserGroupList
 
Fill Query

دومین خصوصیت اصلی این کنترل، Fill Query است که با توجه به کوئری وارد شده در قسمت Query Editor، فعال یا غیر فعال بودن Check Box را تعیین می نماید.
برای کارکرد صحیح این خصوصیت نیاز است تا یک کوئری از نوع Select نوشته شود. نحوه صحیح وارد نمودن کوئری Query Editor برای خصوصیت "Fil Query" را می توان در کد زیر مشاهده نمود.

 
SELECT Column_Name[Primary_Key]
FROM Table_name
WHERE ID =

 

همچنین در این مثال می توان از کد زیر برای Query Editor خصوصیت "Fill Query" استفاده نمود:

 

SELECT UserGroupID
FROM UserGroupList
WHERE UserID =
 
Delete Query

قبل از اجرای دستورات Update Query، کدهای خصوصیت Delete Query اجرا خواهد شد. با این کار یکبار داده های موجود در دیتابیس حذف شده و پس از آن با توجه به وضعیت چک باکس های موجود در فرم و با استفاده از خصوصیت Update Query، آخرین وضعیت چک باکس ها در دیتابیس و در جدول مربوطه ثبت می شود. برای کارکرد صحیح این خصوصیت نیاز است تا یک کوئری از نوع Delete نوشته شود.
نحوه صحیح وارد نمودن کد Query Editor برای خصوصیت "Delete Query" :

 

DELETE
FROM Table_name
WHERE ID =

 

همچنین در این مثال میتوان از کد زیر برای Query Editor خصوصیت "Delete Query" استفاده نمود:

 

DELETE
FROM UserGroupList
WHERE UserID =
 
Update Query

پس از آن که اطلاعات وضعیت چک باکس های فرم در جدول دیتابیس توسط خصوصیت Delete Query حذف شد، نوبت به اجرای خصوصیت Update Query می رسد. با این کار، اطلاعات چک باکس های فرم با توجه به وضعیت فعال و یا عدم فعال بودن آنها وارد دیتابیس می شود. برای کارکرد صحیح این خصوصیت نیاز است تا یک کوئری از نوع Insert نوشته شود.
نحوه صحیح وارد نمودن کد Query Editor برای خصوصیت "Update Query" :

 

INSERT INTO Table_name
(Column1 , Column2 , …)
VALUES
(@KEY , @ID)

 

همچنین در این مثال می توان از کد زیر برای Query Editor در خصوصیت "Update Query" استفاده نمود:

INSERT INTO UserGroupList
(UserID , UserGroupID)
VALUES
(@KEY , @ID)

 

توجه داشته باشید در این کوئری منظور از (KEY@) کلید خود فرم و منظور از (ID@) هم شناسه (Value) هر یک از چک باکس ها است.
به غیر از این چهار خصوصیت اصلی، کنترل چک باکس لیست خصوصیات دیگری نیز دارد که به غیر از خصوصیت Columns Mode، دیگر خصوصیتهای آن با کنترل های دیگر مشترک است.

 

خصوصیت Columns Mode

با استفاده از این خصوصیت می توان تعداد چک باکس های موجود در هر ردیف را مدیریت کرد. به عنوان مثال اگر 6 عدد چک باکس داشته باشیم و مقدار این خصوصیت را برابر با 3 قرار دهیم، در هر ردیف سه عدد چک باکس قرار خواهد گرفت و پس از آن به ردیف بعد خواهد رفت تا تمام چک باکس ها در صفحه قرار گیرند.

 

زی فریم

 

همچنین در خصوصیت Columns Mode برای دسترسی و مدیریت آسان تر چک باکس ها (هنگامی که تعداد زیادی از آنها در برنامه وجود دارد)، ویژگی دیگری در نظر گرفته شده است که با استفاده از آن می توان لیست پیشرفته ای از چک باکس ها ایجاد نمود. برای استفاده از این ویژگی کافیست مقدار خصوصیت Columns Mode را برابر با "1-" قرار داد تا نحوه نمایش آنها مانند تصویر زیر تغییر نماید.

 

زی فریم

 

همان طور که در تصویر فوق مشخص است، این ویژگی علاوه بر آن که تمامی چک باکس ها را به صورت کرکره ای یا دراپ داون (Drop Down) نمایش می دهد، امکان جستجو، فعال سازی و غیر فعال سازی تمام چک باکس ها (به صورت همزمان) را نیز در اختیار کاربر قرار می دهد.

best tracker