PDA

View Full Version : سوال: فیلتر کردن Datagridview با checkboxlist



mehrdad.h
سه شنبه 10 دی 1392, 12:45 عصر
با سلام خدمت دوستان عزیز
من یه datagridview تو برنامم دارم که تمامی رکوردهای جدولمو نمایش میده
میخواستم ببینم چطوری میتونم این جدولو با checklistbox فیلتر کنم
یعنی فقط ستون هایی رو که کاربر مشخص میکنه نمایش بده؟

sagggad
سه شنبه 10 دی 1392, 13:37 عصر
ببین من درست فهمیدم،اگه درست بود بگو برات کد یا سورس بذارم:
مثلا یه گرید ویو دارای ستون های Name و Family و ID هست... و یک CheckListBox هم داریم که دارای سه آیتم با همین نام هاست...درسته؟؟
حالا شما میخوای گریدویو همیشه دارای ستون هایی باشه که در CheckListBox در حالت انتخاب قرار دارند؟؟OKKK؟؟!

sohil_ww
سه شنبه 10 دی 1392, 13:41 عصر
با اجازه دوستمون که تلفظ اسمش برام سخته
در مورد سئوالت بیشتر توضیح بده
اگه گریدت از بانک تغذیه میشه بهتر موقع زدن کوئری فیلد های که می خوای و پاس بدی

mehrdad.h
سه شنبه 10 دی 1392, 14:14 عصر
ببین من درست فهمیدم،اگه درست بود بگو برات کد یا سورس بذارم:
مثلا یه گرید ویو دارای ستون های Name و Family و ID هست... و یک CheckListBox هم داریم که دارای سه آیتم با همین نام هاست...درسته؟؟
حالا شما میخوای گریدویو همیشه دارای ستون هایی باشه که در CheckListBox در حالت انتخاب قرار دارند؟؟OKKK؟؟!

سلام دقیقا همینو میخوام

sagggad
سه شنبه 10 دی 1392, 14:47 عصر
بفرمایید این سورس که برات نوشتم:
لینک دانلود:114661


واین هم کل کدهای برنامه:

using System.Collections.Generic;
using System;
using System.Linq;
using System.Drawing;
using System.Diagnostics;
using System.Threading.Tasks;
using System.Data;
using System.Xml.Linq;
using Microsoft.VisualBasic;
using System.Collections;
using System.Windows.Forms;
// End of VB project level imports


namespace Check
{
public partial class Form1
{
public Form1()
{
InitializeComponent();

//Added to support default instance behavour in C#
if (defaultInstance == null)
defaultInstance = this;
}

#region Default Instance

private static Form1 defaultInstance;

/// <summary>
/// Added by the VB.Net to C# Converter to support default instance behavour in C#
/// </summary>
public static Form1 Default
{
get
{
if (defaultInstance == null)
{
defaultInstance = new Form1();
defaultInstance.FormClosed += new FormClosedEventHandler(defaultInstance_FormClosed) ;
}

return defaultInstance;
}
}

static void defaultInstance_FormClosed(object sender, FormClosedEventArgs e)
{
defaultInstance = null;
}

#endregion

public void CheckedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.Index == 0 & e.NewValue == CheckState.Checked)
{
DataGridView1.Columns[0].Visible = true;
}
else if (e.Index == 0 & e.NewValue == CheckState.Unchecked)
{
DataGridView1.Columns[0].Visible = false;
}
if (e.Index == 1 & e.NewValue == CheckState.Checked)
{
DataGridView1.Columns[1].Visible = true;
}
else if (e.Index == 1 & e.NewValue == CheckState.Unchecked)
{
DataGridView1.Columns[1].Visible = false;
}
if (e.Index == 2 & e.NewValue == CheckState.Checked)
{
DataGridView1.Columns[2].Visible = true;
}
else if (e.Index == 2 & e.NewValue == CheckState.Unchecked)
{
DataGridView1.Columns[2].Visible = false;
}
}

public void Form1_Load(object sender, EventArgs e)
{
DataGridView1.Columns[0].Visible = false;
DataGridView1.Columns[1].Visible = false;
DataGridView1.Columns[2].Visible = false;
}
}

}

موفق باشید:لبخندساده:

hmbarnamenevis
سه شنبه 10 دی 1392, 15:10 عصر
اگر بخواهی اول تنظیم کنی که ستون های دلخواه را انتخاب کند و بعد برای آن نمایش دهد؛ کدش این کد را بنویس:
for (int i = 0; i < checkedListBox1.Items.Count; i++)
{
string s=checkedListBox1.Items[i].ToString();
dataGridView1.Columns[s].Visible=checkedListBox1.GetItemChecked(i);
}

ولی اگر می خواهی بلافاصله با برداشتن تیک از دیتاگرید حذف شود یا نمایش یابد این کد را بنویس:
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
string s=checkedListBox1.Items[e.Index].ToString();
dataGridView1.Columns[s].Visible = checkedListBox1.GetItemChecked(e.Index);
}

اگر هر جا از کد ها رو یا هدف کدها رو متوجه نشدی مطرح کن.