我正在尝试在Sql查询中使用文本框ID,但上面显示了错误。 当我提供客户名称而不是客户ID时,效果很好。
这是我的代码。
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> SearchAddress(string prefixText, int count)
{
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = dbConnection.fnConnectionString();
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = conn;
conn.Open();
cmd.CommandText = @"select city,Addresscode from BName_Addresscode
where Customer='"+txtCustomerName.text+'";
List<string> customers1 = new List<string>();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
String Code = sdr["City"].ToString();
String Name = sdr["Addresscode"].ToString();
Name = Code + "(" + Name + ")";
customers1.Add(Name);
}
}
conn.Close();
return customers1;
}
}
}
答案 0 :(得分:1)
那行不通,这就是原因。
您的页面方法是静态
public static List<string> SearchAddress(string prefixText, int count)
这意味着您不能引用实例成员,txtCustomerName.Text
引用您的类的实例成员(txtCustomerName
)。
要解决此问题,请将文本框的实际值移动到此方法的自变量,有趣的事实是您可能已经在该位置了,prefixText
自变量似乎就是其中一个,不是吗?
public static List<string> SearchAddress(string **prefixText**, int count)
然后,在JavaScript中,只需按照docs中所述将值传递给方法:
function GetSearchAddress()
{
var customer = $get("txtCustomerName").value;
var count = ...;
PageMethods.SearchAddress(customer, count, onCompleted);
}