gpt4 book ai didi

c# - 将过滤器应用于 BindingSource,但它不起作用

转载 作者:行者123 更新时间:2023-11-30 14:03:40 24 4
gpt4 key购买 nike

我有一个文本框,我在里面放了一个短语,它要么是任务的描述,要么是任务的 ID。我想使用此 TextBox 中的文本过滤列表。但是当我将文本放入此 TextBox 时,过滤不起作用,DataGridView 中的集合也没有改变。

有什么问题吗?

public void BindData()
{
var emptyBindingSource = new BindingSource();
dataGridViewTaskList.AutoGenerateColumns = false;
dataGridViewTaskList.DataSource = emptyBindingSource;

var taskList = GetTasks();

_bindingSource = new BindingSource();
_bindingSource.DataSource=taskList.Response;

dataGridViewTaskList.AutoGenerateColumns = false;

dataGridViewTaskList.DataSource = _bindingSource.DataSource;

if (dataGridViewTaskList.Columns["gridViewColumnId"] == null)
dataGridViewTaskList.Columns.Add(new DataGridViewColumn() {Name = "gridViewColumnId"});
else
dataGridViewTaskList.Columns["gridViewColumnId"].DataPropertyName = "Id";

if (dataGridViewTaskList.Columns["gridViewColumnDescription"] == null)
dataGridViewTaskList.Columns.Add(new DataGridViewColumn() {Name = "gridViewColumnDescription"});
else
dataGridViewTaskList.Columns["gridViewColumnDescription"].DataPropertyName = "Description";
}

private void tbSearchedPhraseOrId_TextChanged(object sender, EventArgs e)
{
_bindingSource.Filter = string.Format("Id = '{0}'", tbSearchedPhraseOrId.Text);
}

我在 BindData 方法中添加了以下内容,但它也不起作用:

_bindingSource.Filter = string.Format("Id LIKE '%{0}%'", "23");

设计师:

this.dataGridViewTaskList.AllowUserToAddRows = false;
this.dataGridViewTaskList.AllowUserToDeleteRows = false;
this.dataGridViewTaskList.AllowUserToOrderColumns = true;
this.dataGridViewTaskList.AllowUserToResizeRows = false;
this.dataGridViewTaskList.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.dataGridViewTaskList.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.dataGridViewTaskList.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.dataGridViewTaskList.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridViewTaskList.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.gridViewColumnId,
this.gridViewColumnDescription});
this.dataGridViewTaskList.Location = new System.Drawing.Point(6, 62);
this.dataGridViewTaskList.MultiSelect = false;
this.dataGridViewTaskList.Name = "dataGridViewTaskList";
this.dataGridViewTaskList.ReadOnly = true;
this.dataGridViewTaskList.RowHeadersVisible = false;
this.dataGridViewTaskList.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dataGridViewTaskList.Size = new System.Drawing.Size(414, 488);
this.dataGridViewTaskList.TabIndex = 0;

最佳答案

根据documentation ,您的基础数据源(即您的任务列表)必须实现 IBindingListView 接口(interface)才能具有有效的 Filter 属性。您确定现在是这种情况吗?

(顺便说一句,您应该将 DataGridView 的 DataSource 属性设置为 BindingSource 对象本身,而不是 BindingSource.DataSource 属性。)

关于c# - 将过滤器应用于 BindingSource,但它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3725674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com