就是输入某个数据后,动态模糊查询结果显示的意思吧? 用异步实现 ASP.NET AJAX Control Toolkit 已经包含了这个特性:AutoCompleteExtender
protected void ASPxComboBox1_TextChanged(object sender, EventArgs e) { string NumDrop = this.ASPxComboBox1.Text.Trim(); string code_query = "SELECT * FROM base WHERE (dwcode LIKE '%' + NumDrop + '%')"; string strConnnection = System.Configuration.ConfigurationManager.ConnectionStrings["emailConnectionString"].ConnectionString; SqlConnection con = new SqlConnection(strConnnection); //创建OleDbDataAdapter对象,按照指定的查询语句获取结果 SqlDataAdapter cmd = new SqlDataAdapter(code_query, con); //定义DataSet对象,将查询结果填充到这个对象上 DataSet ds = new DataSet(); cmd.Fill(ds, "contents"); if (con.State == ConnectionState.Closed) { con.Open(); }
List<string> code_num = new List<string>(); foreach (DataRow row in ds.Tables[0].Rows) { foreach (DataColumn column in ds.Tables[0].Columns) { code_num.Add(row[column].ToString()); } } int index=0; for (int i = 0; i < code_num.Count; i++) { if (code_num[i] == NumDrop) { index = i;
} } this.ASPxComboBox1.DataSource = ds ; this.ASPxComboBox1.SelectedIndex = index ;
"SELECT * FROM base WHERE (dwcode LIKE '%' + NumDrop + '%')"; 这么写没取出来,但是没觉得哪不对呢。 this.ASPxComboBox1.displayMember="要显示的列名"; this.ASPxComboBox1.valueMember ="值所在的列名"; this.ASPxComboBox1.DataSource = ds ; ASPxComboBox1引不出来这两个属性,怎么办
"SELECT * FROM base WHERE (dwcode LIKE '%' + NumDrop + '%')"; 这么写没取出来,但是没觉得哪不对呢。你这个执行的就是 SELECT * FROM base WHERE (dwcode LIKE '%' + NumDrop + '%') 你觉得对么? 所谓字符串拼接 至少也要超过2对双引号吧,只有一对双引号,叫拼接么
"SELECT * FROM base WHERE dwcode LIKE '%" + NumDrop + "%'"; 改成了这样,对了吧
循环,if(list.contains(text)){combobox.items.add(list[i])}
最后把text赋值回去,并设置光标位置到最后
用异步实现
ASP.NET AJAX Control Toolkit 已经包含了这个特性:AutoCompleteExtender
{
string NumDrop = this.ASPxComboBox1.Text.Trim();
string code_query = "SELECT * FROM base WHERE (dwcode LIKE '%' + NumDrop + '%')";
string strConnnection = System.Configuration.ConfigurationManager.ConnectionStrings["emailConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(strConnnection); //创建OleDbDataAdapter对象,按照指定的查询语句获取结果
SqlDataAdapter cmd = new SqlDataAdapter(code_query, con); //定义DataSet对象,将查询结果填充到这个对象上
DataSet ds = new DataSet();
cmd.Fill(ds, "contents"); if (con.State == ConnectionState.Closed)
{
con.Open();
}
List<string> code_num = new List<string>();
foreach (DataRow row in ds.Tables[0].Rows)
{
foreach (DataColumn column in ds.Tables[0].Columns)
{
code_num.Add(row[column].ToString());
}
}
int index=0;
for (int i = 0; i < code_num.Count; i++)
{
if (code_num[i] == NumDrop)
{
index = i;
}
}
this.ASPxComboBox1.DataSource = ds ;
this.ASPxComboBox1.SelectedIndex = index ;
}这是我写的代码,运行完在ASPxComboBox1中输入信息回车,提示错误:列名 'NumDrop' 无效,为什么提示这个错误?
"SELECT * FROM base WHERE (dwcode LIKE '%' + NumDrop + '%')";
这是什么写法,字符串拼接和SQL语句的知识需要恶补了
+写在""里面,是要闹哪样
断点,把你拼接的SQL语句抠出来看看是啥
this.ASPxComboBox1.valueMember ="值所在的列名";
this.ASPxComboBox1.DataSource = ds ;
这么写没取出来,但是没觉得哪不对呢。
this.ASPxComboBox1.displayMember="要显示的列名";
this.ASPxComboBox1.valueMember ="值所在的列名";
this.ASPxComboBox1.DataSource = ds ;
ASPxComboBox1引不出来这两个属性,怎么办
这么写没取出来,但是没觉得哪不对呢。你这个执行的就是
SELECT * FROM base WHERE (dwcode LIKE '%' + NumDrop + '%')
你觉得对么?
所谓字符串拼接
至少也要超过2对双引号吧,只有一对双引号,叫拼接么
改成了这样,对了吧
combobox不是表格,只能显示1列,另一列作为值.直接整个表绑定,不指定显示那一列,当然就出错了