我正在研究C#winform vs2008项目。要求是在网格和网格中显示行级详细信息一个文本框cloumn用户将键入文本,它应填充自动完成文本。自动填充搜索应仅基于一列,但需要向用户显示其他一列。例子:姓名和电话号码。用户将根据名称进行搜索,只有额外的列电话才能显示。
我有以下查询:
1)数据库很大,是否有免费的自动完成3方工具可用。 2)如何在自动完成中显示多个列。
请告诉我,如何在自动填充功能中显示多个列。
我被困在这里..请帮帮我..
谢谢和问候 拉姆
答案 0 :(得分:0)
public Class YourClass
{
public string Name;
{
get;
private set;
}
public string PhoneNo;
{
get;
private set;
}
public override string ToString()
{
return String.Format("{0,-50} {1,-15}", this.Name, this.PhoneNumber);
}
}
internal class YourForm : Form
{
ComboBox YourComboBox = new Combobox();
//Set the style of your combobox such that it looks like a text box
BindingList<KeyValuePair<string, YourClass> bl = new Binding<string, YourClass>();
//Query for the data to populate the BindingList
//Lets say you put the UserId or ContactId of the person in the Key..
YourComboBox.DataSource = bl;
YourComboBox.DisplayMember = "Value";
YourComboBox.ValueMember = "Key";
}
做你自动完成的事情
对于您的需求,没有现成的优雅实施方案。我给你的东西会在表格中显示结果..
例如: -
但是使用名称,在控件呈现的字体中获取空格字符。
(您必须在编辑模式下查看此答案才能看到它)
如果您想要完全符合您的需要,您将必须使用一些可用的第三方控件或自己编写一个。正如有人说的那样,代码太多了。
答案 1 :(得分:0)
有第三方组件可用于支持多列下拉,例如DevExpress的LookUpEdit,Infragistics的UltraCombo和Telerik的RadMultiColumnComboBox。您可以更改过滤器,然后在键入时弹出下拉列表,但这不会超过Windows自动完成的性能,后者使用第二个线程来枚举候选项。
如果您有这么多数据,如果您的控件库默认启用它们,则可能需要禁用自动调整下拉列和动画的大小。