高手進來撿100分
今天在使用 AutoCompleteExtender 自动完成控件时发现一个问题,也许这是微软的一个 bug 吧。如果返回的数组是纯数字,那么将变成 undefined或 null。
public string[] GetUsers(string prefixText, int count) //兩個參數分別是輸入文本跟提示項數
{
string[] items = new string[count];
SqlConnection myCon = new SqlConnection("Data Source=**;Initial Catalog=**;User ID=**;Password=**"); //數據庫連接
myCon.Open(); //打開數據庫連接 select * from authors
SqlCommand myCmd = new SqlCommand("select top " + count + " * from authors where ziplike '" + prefixText + "%'", myCon);
SqlDataReader myDR = myCmd.ExecuteReader();
string auid;
int i = 0;
while (myDR.Read())
{
auid = myDR["zip"].ToString().Trim();
items[i++]=(auid);
}
myCon.Close(); //關閉數據庫連接
return items;
}
由於查到的郵編(ZIP)是純數字就出現了undefined的現象
我不清楚为什么数字字符串会变成 undefined 和 null,那又要如何解決這一問題
跪求高手們不吝賜教,100分相送
------解决方案--------------------楼主你的问题不是难,而是奇怪.按理说,zip Like '1%'都会把你第一个字符为"1"的记录取出来,但你现在取到的却是undefined,你看一下,在Sql查询分析器里执行:
select top 5 * from authors where zip like '1%'
如果也如你上面所说,就要检查你zip具体内容了.如果正确,就检查你取数据的语法.
------解决方案--------------------1、Count是用来拼写在sql语句中的,不是用来声明数组的。建议你使用ArrayList来保存你需要的结果。这样能够避免产生null。或者使用DataTable获取结果,然后根据DataTable.Rows.Count声明数组。
2、我没用过AutoCompleteExtender,是不是有些格式化的内容。
------解决方案--------------------应该是类型转换问题,数组初始化后未值引起
while (myDR.Read())
{
auid = myDR["zip"].ToString().Trim();
items[i++]=(auid);
}
改成 items[i++] = " "+auid;
试试