PDA

View Full Version : CheckedListBox



Neda_Bagheri
پنج شنبه 21 دی 1385, 10:53 صبح
سلام به دوستان عزیز
من مجبورم از یک CheckedListBox استفاده کنم و آنرا به دیتاست وصل کنم این کار را انجام دادم ولی CheckedListBox با وجود اینکه DisplayMember & ValueMember دارد متوجه نمی شود که من میخواهم نام آنرا داخل CheckedListBox نشان دهم و از Valuemember آن برای اعمال تغییراتم استفاده کنم
فکر می کنید می توانم از multiColumn در CheckedListBox استفاده کنم ؟ چطور تا حالا با این خصلت کار نکردم ؟

programmermp
پنج شنبه 21 دی 1385, 11:15 صبح
با سلام

من که سئوال شما رو متوجه نشدم اگه امکانش هست بیشتر توضیح بدهید

Neda_Bagheri
پنج شنبه 21 دی 1385, 13:34 عصر
اگر شما تا حالا با خاصیت DisplayMember & VlueMember درCheckedlistbox استفاده کرده اید و جواب گرفته اید لطفا مرا راهنمایی کنید .
مرسی

Neda_Bagheri
یک شنبه 24 دی 1385, 11:25 صبح
هیچ کس پیدا نشد جواب منو بده ولی خودم یه راه حل دیگه پیدا کردم یه Datagrid گذاشتم و توش از Checkbox استفاده کردم این بهترین راه حل بود .

programmermp
یک شنبه 24 دی 1385, 11:33 صبح
سلام

هنوز هم سئوال شما برای من نامفهوم اصلا شما مگر می خواستید با checkedlistbox

چه کاری انجام بدید که بجاش از دیتاگراید با checkbox استفاده کردید

ali_kolahdoozan
یک شنبه 24 دی 1385, 11:56 صبح
برای این کنترل آیتمها رو یکی یکی به آن add کنید بهتره و ساده تر

saghari
یک شنبه 24 دی 1385, 13:09 عصر
با سلام
اگر سوال شما رو درست متوجه شده باشم فکر کنم استفاده از کامپوننت جانوس کار شما رو خیلی راحت کنه مخصوصا برای استفاده از multiColumn

nazila_f
دوشنبه 25 دی 1385, 13:50 عصر
فکر کنم منظور سوال این بوده که Checklistbox با Value member مشکل داره .منم همین مشکل رو دارم . یعنی دقیقا با dataset به آن datasource,value member,display member را می دم display member را درست نشان می دهد ولی وقتی می خوام از value member آن استفاده کنم و مثلا id یه چیزی رو برگردونم value member رو برنمی گردونه.

engineer_vm
چهارشنبه 02 خرداد 1386, 14:28 عصر
آقا منم دقیقاً همین مشکل رو دارم کسی تونسته این مشکل رو حل کنه؟! اگه تیکه کد یا برنامه فسقلی دارین ممنون میشم بدین..!

engineer_vm
پنج شنبه 03 خرداد 1386, 09:08 صبح
مثکه واسه بایند کردن ChecklistBox باید کد نوشت!!!!!!!!!!!
Dim CN As String = "Data Source=(local);Initial Catalog=Database1;Integrated
Security=True"
Dim SCON As New SqlConnection(CN)
strsql = "SELECT * FROM [Table1]"
ds = New DataSet
da = New System.Data.SqlClient.SqlDataAdapter(strsql, SCON)
da.Fill(ds, "tmpTbl")
Me.chkEmkanat.DataSource = ds.Tables("tmpTbl")
Me.chkEmkanat.DisplayMember = "Field"
Me.chkEmkanat.ValueMember = "FieldID"

حالا موضوع اینجاست که چه جوری مقدار DisplayMember و ValueMember رو توی مثلاً یهTable دیگه بریزم..! مثلاً وقتی کاربر یه چند تا گزینه رو انتخاب میکنه DisplayMember و ValueMember های انتخاب هاشو بتونه توی یه جا دیگه ببره.! یه for گذوشتم ولی یه error میده.!..! یعنی یه for به اندازه تعداد انتخاب های کاربر گذوشتم مثلاً اگه 3 تا گزینه چک باکس رو انتخابکرده به اندازه For i = Me.chkBoxlist.CheckedItems.Count - 1 To 0 Step -1
که در اینجا Cont=3 هستش..!
حلقه ایجاد میشه اما خطا میده!
بازم باید باهاش ور برم ..!

ghafoori
پنج شنبه 03 خرداد 1386, 14:37 عصر
دوست عزیز چه خطایی می دهد شما در این for اطلاعات را چگونه در جدول بعدی قرار می دهید کمی بیشتر توضیح دهید

engineer_vm
جمعه 04 خرداد 1386, 22:51 عصر
من 2 حالت برای پر کردن ChecklistBox رو امتحان کردم:

1- استفاده از DataReader

Private Sub dbchkEmkanat()
Dim CN As String = "Data Source=(local);Initial Catalog=DatabaSe;Integrated Security=True"
Dim SCON As New SqlConnection(CN)
strsql = "SELECT * FROM [Emkanat]"
Dim cmd As New SqlCommand(strsql, SCON)
SCON.Open()
Dim dr As SqlDataReader = cmd.ExecuteReader()
While dr.Read
Me.chkEmkanat.Items.Add(dr.Item("Emkanat"))
chkEmkanatCounter = chkEmkanatCounter + 1
End While
dr.Close()
SCON.Close()
End Sub

2- استفاده از DataSet

Private Sub dbchkEmkanat()
Dim CN As String = "Data Source=(local);Initial Catalog=DatabaSe;Integrated Security=True"
Dim SCON As New SqlConnection(CN)
strsql = "SELECT * FROM [Emkanat]"
ds = New DataSet
da = New System.Data.SqlClient.SqlDataAdapter(strsql, SCON)
da.Fill(ds, "tmpTbl")
Me.chkEmkanat.DataSource = ds.Tables("tmpTbl")
Me.chkEmkanat.DisplayMember = "Emkanat"
Me.chkEmkanat.ValueMember = "EmkanatID"
chkEmkanatCounter = ds.Tables("tmpTbl").Rows.Count
End Sub
بسیار خوب پس حالا 2 روش واسه پر کردن چک باکس لیست هستش .. منتها توی روش اول که با دیتا ریدر هست اگه مثلاً کلید اصلی داشته باشیم نمیدونم چه جوری باید بگم که وقتی آیتم اول انتخاب شد کلید اصلیش مثلاً فلان عدد هست ..و در جای دیگه بتونم ازش استفاده کنم، چون اصلاً نمیتونم بهش ID بدم..!
توی روش دوم میام خیلی راحت با کد نویسی DataSource که از توی Properties اون کار نمیکرد رو راش میندازم..و همچنین ValueMember و DisplayMember اون رو..!
حالا فرض میگیریم که بخواهیم فقط یه آیتم از چک باکس رو انتخاب کنیم.! چه جوری بتونیم با انتخاب یک آیتم، کلید اصلی مربوط به اون آیتم و یا همون Valuemember اون رو بخونم و جای دیگه استفاده کنم..!
با کمبو باکس خیلی راحت میشه اینکارو کرد اما .....!
ممنون.

E.Mousavi
یک شنبه 11 شهریور 1386, 09:10 صبح
سلام دوستان
من هم همین مشکل رو داشتم که checklistbox رو پر می کردم اما نمی تونستم با value هاش کار کنم یه روش هست که کلک بزنید و value یی رو که لازم دارید برگردونید اینم کدش :



staticstring[] ArraylistBoxOperational = newstring[50];
protectedvoid BindData()
{

SourceBussinessRule SourceBR = newSourceBussinessRule();
DataTable tempdt = SourceBR.GetSources("", "type=" + BaseClass.SourceTypeOperational);
listBoxOperational.Items.Clear();
for (int i = 0; i < tempdt.Rows.Count; i++)
{
ArraylistBoxOperational[i] = tempdt.Rows[i]["Id"].ToString();
listBoxOperational.Items.Add(tempdt.Rows[i]["FullName"].ToString());
}
listBoxOperational.SelectedIndex = -1;
}
privatevoid listBoxTalifi_Leave(object sender, EventArgs e)
{
if (listBoxAuthorized.SelectedIndex != -1)
{
string SourcesId = "";
for (int i = 0; i <= listBoxAuthorized.Items.Count-1 ; i++)
if (listBoxAuthorized.GetItemChecked(i))
SourcesId += ArraylistBoxAuthorized[i] + ",";
}
}


این تکه کد از یک آرایه کمکی استاتیک استفاده می کند که index اون با ایندکس checklistboxمون یکی پس هر موقع یکی از آیتم ها انتخاب شده باشند اون value رو بهمون برمی گردونه