是否可以在TextBox中将DataTable作为AutoCompleteSource?(C#)
不直接,您需要将数据表读入AutoCompleteStringCollection.
你可以做这样的事情(从这里):
private AutoCompleteStringCollection GetAutoSourceCollectionFromTable(DataTable table)
{
AutoCompleteStringCollection autoSourceCollection = new AutoCompleteStringCollection();
foreach (DataRow row in table.Rows)
{
autoSourceCollection.Add(row[0]); //assuming required data is in first column
}
return autoSourceCollection;
}
Run Code Online (Sandbox Code Playgroud)
Jared是正确的 - 如果不做一些操作就不能直接绑定.以下是使用LINQ DataSet扩展来检索字段作为自动完成源的示例:
DataTable dtPosts = new DataTable();
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["StackOverflow"].ConnectionString))
{
conn.Open();
using (SqlDataAdapter adapt = new SqlDataAdapter("SELECT TOP 100 Id, Title, Body, CreationDate FROM Posts WHERE Title IS NOT NULL ORDER BY Id", conn))
{
adapt.SelectCommand.CommandTimeout = 120;
adapt.Fill(dtPosts);
}
}
//use LINQ method syntax to pull the Title field from a DT into a string array...
string[] postSource = dtPosts
.AsEnumerable()
.Select<System.Data.DataRow, String>(x => x.Field<String>("Title"))
.ToArray();
var source = new AutoCompleteStringCollection();
source.AddRange(postSource);
textBox1.AutoCompleteCustomSource = source;
textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18687 次 |
| 最近记录: |