#asp.net
#asp.net
Вопрос:
В Ajax я использую autocompleteExender в моем asp.net приложение, я пишу сервис для этого, когда я запускаю этот сервис, он работает нормально, когда я помещаю autocompleteextender в asp.net страница и назначение свойства для ajax autocompleteextender не работает. это мой кодовый сервис:
[WebMethod]
public string[] GetCompletionList(string prefixText)
{
SqlConnection con=new SqlConnection
("server=******;database=Mydb;user id=***;password=****;");
string sql = "Select productname from F_Product
Where productname like '" prefixText "%'";
SqlDataAdapter da = new SqlDataAdapter(sql, con);
try
{
DataTable dt = new DataTable();
da.Fill(dt);
string[] items = new string[dt.Rows.Count];
int i = 0;
foreach (DataRow dr in dt.Rows)
{
items.SetValue(dr[0].ToString(), i);
i ;
}
return items;
}
catch
{
return null;
}
finally
{
con.Close();
}
и это мой код ajax autocompleteextender.
<asp:AutoCompleteExtender ID="AutoCompleteExtender1" MinimumPrefixLength="2"
TargetControlID ="TextBox1" ServiceMethod="GetCompletionList"
ServicePath="~/Autocomplete.asmx"
runat="server">
</asp:AutoCompleteExtender>
<asp:TextBox ID="TextBox1" runat="server"
Width="213px"></asp:TextBox>
Ответ №1:
Попробуйте это.
[WebMethod]
public string[] GetCompletionList(string prefixText)
{
string sql = "Select productname from F_Product Where productname like @prefixText ";
SqlDataAdapter da = new SqlDataAdapter(sql, System.Configuration.ConfigurationManager.ConnectionStrings["dbConnectionString"].ConnectionString);
da.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 50).Value = prefixText "%";
DataTable dt = new DataTable();
da.Fill(dt);
string[] items = new string[dt.Rows.Count];
int i = 0;
foreach (DataRow dr in dt.Rows)
{
items.SetValue(dr["productname"].ToString(), i);
i ;
}
return items;
}
Если вы сочтете это полезным, пожалуйста, отметьте это как свой ответ, иначе дайте мне знать…
Комментарии:
1. @Anadnd я ничего не получаю в asp.net , но когда я запускаю serivce, он работает
2. Включите этот метод [System.Web.Script. Услуги. Например, ScriptService] .. [System.Web.Script. Услуги. ScriptService] веб-сервис общедоступного класса: System.Web.Services. Веб-сервис {
3. спасибо за ответ, но я не понимаю, куда я должен поместить этот веб-сервер.
4. @Surya sasidhar: Если какой-либо ответ дает решение проблемы, то вы можете принять ответ. Это реальный способ оценить.
5. @Yank, ya, я получил ответ на свой вопрос.
Ответ №2:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Web.Script.Services;
namespace YourProject
{
/// <summary>
/// Summary description for WebService
/// </summary>
// [ScriptService]
//[System.Web.Script.Services.ScriptService()]
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod]
public string[] GetCompletionList(string prefixText)
{
string sql = "Select productname from F_Product Where productname like @prefixText ";
SqlDataAdapter da = new SqlDataAdapter(sql, System.Configuration.ConfigurationManager.ConnectionStrings["dbConnectionString"].ConnectionString);
da.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 50).Value = prefixText "%";
DataTable dt = new DataTable();
da.Fill(dt);
string[] items = new string[dt.Rows.Count];
int i = 0;
foreach (DataRow dr in dt.Rows)
{
items.SetValue(dr["productname"].ToString(), i);
i ;
}
return items;
}
}
}
Если вы сочтете это полезным, пожалуйста, отметьте это в своем ответе, иначе дайте мне знать…
Комментарии:
1. Спасибо, мистер Анандмоханавасти