我一直在努力解決這個問題幾天了,我還沒有找到任何答案;我創建了一個ToolStripMenu
陣列從一個存儲過程動態填充:使用列表內容過濾datagridview C#
ToolStripMenuItem[] itemsDepto = null;
itemsDepto = new ToolStripMenuItem[data.Tables[0].Rows.Count];
for (int i = 0; i <= data.Tables[0].Rows.Count - 1; i++)
{
itemsDepto[i] = new ToolStripMenuItem();
itemsDepto[i].Tag = data.Tables[0].Rows[i].ItemArray[0];
itemsDepto[i].Text = data.Tables[0].Rows[i].ItemArray[1].ToString();
itemsDepto[i].CheckOnClick = true;
itemsDepto[i].Checked = true;
itemsDepto[i].Click += DeptoFilter_Click;
deptoList.Add(data.Tables[0].Rows[i].ItemArray[1].ToString());
}
tsmiDepartamento.DropDownItems.AddRange(itemsDepto);
而且我想要實現的是使用該ToolStripMenu
作爲用戶的過濾器控制,默認情況下被選中狀態,以便當用戶取消選中在菜單中,它應該過濾未被選中內容的行。
Click事件中我添加和刪除列表取決於菜單按鈕的狀態值,你可以在下面的例子中看到:
private void DeptoFilter_Click(object sender, EventArgs e)
{
ToolStripMenuItem temp = new ToolStripMenuItem();
temp = (ToolStripMenuItem)sender;
BindingSource bind = new BindingSource();
bind.DataSource = dgvPersonalTotal.DataSource;
if (temp.CheckState == CheckState.Checked)
{
deptoList.Add(sender.ToString());
}
else
{
deptoList.Remove(sender.ToString());
}
bind.Filter = "Departamento NOT IN (" + /*LIST*/"" + ")";
dgvPersonalTotal.DataSource = bind;
//foreach (string x in deptoList)
//{
//}
}
但最大的問題我有,我怎樣才能使用列表過濾綁定源,如你可以在代碼中看到的,我不能只使用列表,甚至嘗試在foreach中使用BindingSource.Filter,我不知道如何解決這個問題,所以任何想法都很受讚賞。
deptoList是什麼類型的? – Alon
List deptoList = new List (); –
cyberac75