使用绑定到绑定到LINQ to SQL类的BindingSource控件的datagridview,我想知道如何将bindingSource定位到特定记录,也就是说,当我在文本框中键入产品名称时,bindingsource应该转移到该特定产品。这里是我的代码:如何通过代码将BindingSource移动到特定记录
在我的形式FrmFind:
NorthwindDataContext dc;
private void FrmFind_Load(object sender, EventArgs e)
{
dc = new NorthwindDataContext();
var qry = (from p in dc.Products
select p).ToList();
FindAbleBindingList<Product> list = new FindAbleBindingList<Product>(qry);
productBindingSource.DataSource = list.OrderBy(o => o.ProductName);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
TextBox tb = sender as TextBox;
int index = productBindingSource.Find("ProductName", tb.Text);
if (index >= 0)
{
productBindingSource.Position = index;
}
}
在节目类:
public class FindAbleBindingList<T> : BindingList<T>
{
public FindAbleBindingList()
: base()
{
}
public FindAbleBindingList(List<T> list)
: base(list)
{
}
protected override int FindCore(PropertyDescriptor property, object key)
{
for (int i = 0; i < Count; i++)
{
T item = this[i];
//if (property.GetValue(item).Equals(key))
if (property.GetValue(item).ToString().StartsWith(key.ToString()))
{
return i;
}
}
return -1; // Not found
}
}
我如何能实现find方法,使其工作?
设置Position属性。 http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.position.aspx – 2012-07-30 00:13:35
我已经检查过该链接,它不回答我的问题。 – 2012-07-30 00:18:41
也许这会更有帮助http://msdn.microsoft.com/en-us/library/ms158165.aspx – 2012-07-30 00:22:31