我已经创建了一个使用ajax的自动完成文本框,它出色地工作。它基本上提供了房间代码列表。以下是代码:基于查询字符串的自动完成文本框
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> GetRoomList(string prefixText, int count)
{
using (SqlConnection roomsConnection = new SqlConnection())
{
roomsConnection.ConnectionString = ConfigurationManager.ConnectionStrings["roomsConnectionString"].ConnectionString;
using (SqlCommand roomsCommand = new SqlCommand())
{
roomsCommand.CommandText = "select Room, Site from tblRoom where Room like '%' + @SearchText + '%'";
roomsCommand.Parameters.AddWithValue("@SearchText", prefixText);
roomsCommand.Connection = roomsConnection;
roomsConnection.Open();
List<string> roomList = new List<string>();
using (SqlDataReader roomReader = roomsCommand.ExecuteReader())
{
while (roomReader.Read())
{
roomList.Add(roomReader["Room"].ToString());
}
}
roomsConnection.Close();
return roomList;
}
}
}
但是,我希望根据用户在上一页选择的选项生成此房间代码列表。有两种方式可以传递选项。一个是使用查询字符串。这是我写的代码:
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> GetRoomList(string prefixText, int count)
{
using (SqlConnection roomsConnection = new SqlConnection())
{
roomsConnection.ConnectionString = ConfigurationManager.ConnectionStrings["roomsConnectionString"].ConnectionString;
HttpRequest request = HttpContext.Current.Request;
string site1 = request.QueryString["site"];
using (SqlCommand roomsCommand = new SqlCommand())
{
roomsCommand.CommandText = "select Room, Site from tblRoom where Site = '" + site1 + "' AND Room like '%' + @SearchText + '%'";
roomsCommand.Parameters.AddWithValue("@SearchText", prefixText);
roomsCommand.Connection = roomsConnection;
roomsConnection.Open();
List<string> roomList = new List<string>();
using (SqlDataReader roomReader = roomsCommand.ExecuteReader())
{
while (roomReader.Read())
{
roomList.Add(roomReader["Room"].ToString());
}
}
return roomList;
roomsConnection.Close();
}
}
}
我没有得到任何错误,这个它只是不从查询字符串存储“网站”。我已经在我的网页的其他区域使用了它,它工作正常。
我希望它的另一种工作方式是使用Page.PreviousPage。再次这是我写的:
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> GetRoomList(string prefixText, int count)
{
using (SqlConnection roomsConnection = new SqlConnection())
{
roomsConnection.ConnectionString = ConfigurationManager.ConnectionStrings["roomsConnectionString"].ConnectionString;
if (Page.PreviousPage != null)
{
if (Page.PreviousPage.IsCrossPagePostBack == true)
{
string site1 = PreviousPage.getDropDownListSite.SelectedValue;
using (SqlCommand roomsCommand = new SqlCommand())
{
roomsCommand.CommandText = "select Room, Site from tblRoom where Site = '" + site1 + "' AND Room like '%' + @SearchText + '%'";
roomsCommand.Parameters.AddWithValue("@SearchText", prefixText);
roomsCommand.Connection = roomsConnection;
roomsConnection.Open();
List<string> roomList = new List<string>();
using (SqlDataReader roomReader = roomsCommand.ExecuteReader())
{
while (roomReader.Read())
{
roomList.Add(roomReader["Room"].ToString());
}
}
return roomList;
roomsConnection.Close();
}
}
}
}
}
我不能让这个代码工作,因为它不喜欢Page.PreviousPage。我得到错误
An object reference is required for the non-static filed, method, or property 'system.Web.UI.Page.PreviousPage.get'
但我不能确定还有什么可以使用。我曾尝试使用会话变量,它工作的很好,但如果我用户需要在同一个会话中再次使用表单,它将保留上一个值。
我打算给我们一个if,else语句,一旦我有单独的组件工作。
任何人都可以帮忙。我真的很感激它。 非常感谢
谢谢,谢谢,谢谢。那正是我需要的。我很抱歉,需要一段时间才能回复,但我不在。这真的帮助了我。对此,我真的非常感激。谢谢。 – user2560913