0
我有一个连接到充满数据的BindingSource的DGrid。我正在尝试使用复选框为用户过滤出名为“状态”的特定列中的数据。我有四个复选框,因为同一列中有四个不同的数据文本(列在最右侧)。 Picture hereBindingSource过滤器 - 从字符串中删除单词
很显然,当用户选中/取消选中其中一个复选框时,它会设置一个过滤器到网格,以添加/删除列中的数据。
这里是我的代码,当复选框被选中的作品:
private void chkProgress_CheckedChanged(object sender, EventArgs e)
{
string filter = "";
if (chkProgress.Checked)
{
filter = "Status LIKE '%Progress%'";
if (chkPending.Checked)
{
filter += " Or Status LIKE '%Pending%'";
}
else
{
}
if (chkCompleted.Checked)
{
filter += " Or Status LIKE '%Completed%'";
}
else
{
}
if (chkArchived.Checked)
{
filter += " Or Status LIKE '%Archived%'";
}
else
{
}
}
else
{
}
MessageBox.Show(filter);
bs.Filter = string.Format(filter);
refreshGrid();
}
private void chkCompleted_CheckedChanged(object sender, EventArgs e)
{
string filter = "";
if (chkCompleted.Checked)
{
filter = "Status LIKE '%Completed%'";
if (chkPending.Checked)
{
filter += " Or Status LIKE '%Pending%'";
}
else
{
}
if (chkProgress.Checked)
{
filter += " Or Status LIKE '%Progress%'";
}
else
{
}
if (chkArchived.Checked)
{
filter += " Or Status LIKE '%Archived%'";
}
else
{
}
}
else
{
}
MessageBox.Show(filter);
bs.Filter = string.Format(filter);
refreshGrid();
}
private void chkArchived_CheckedChanged(object sender, EventArgs e)
{
if (chkArchived.Checked)
{
}
else
{
}
}
private void chkPending_CheckedChanged(object sender, EventArgs e)
{
string filter = "";
if (chkPending.Checked)
{
filter = "Status LIKE '%Pending%'";
if(chkProgress.Checked)
{
filter += " Or Status LIKE '%Progress%'";
}
else
{
}
if(chkCompleted.Checked)
{
filter += " Or Status LIKE '%Completed%'";
}
else
{
}
if(chkArchived.Checked)
{
filter += " Or Status LIKE '%Archived%'";
}
else
{
}
}
else
{
}
MessageBox.Show(filter);
bs.Filter = string.Format(filter);
refreshGrid();
}
我怎么会去从字符串过滤器删除数据的时候都选中?类似于 - =?的东西
干杯我已经使用这个看到我更新的问题。但有时它似乎并没有将字符串替换为无。它是间歇性的,每6次尝试就不会有1次。 – Zack
尝试在替换行上添加一个断点,然后观察filter-var,直到它无法按预期工作。 –