PDA

View Full Version : سوال: autocompletebox



asgharsosol
پنج شنبه 05 دی 1392, 22:39 عصر
با سلام و خسته نباشید خدمت دوستان محترم.
من میخام تو طراحی یه سایت که با asp.net هستش از autocompletebox استفاده کنم.
میخام از تو جداول دیتابیسم یه سری مطالبی رو جستجو کنم و به صورت آنلاین مثلا تو یه textbox نمایش بدم.
قسمت جستجو در بانکش رو بلدم که با دستور like تو sql نوشته میشه.
اما قسمت ajax که تابع فراخوانی اطلاعات از بانک رو فراخوانی میکنه و نتایج رو بدون رفرش شدن صفحه نمایش میده رو بلد نبستم.
کلا از ajax هیچی بلد نیستم.
یه نمونه کد از اینترنت گرفتم ولی درست اجرا نمیشد.
میخواستم خواهش کنم اگه دوستان میتونن اطلاعات کاملی بهم بدن.

kamranetemadi
جمعه 06 دی 1392, 12:28 عصر
این کد جاوا اسکریپتش
function SearchText() {

$(".autosuggest").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "order.aspx/GetAutoCompleteData",
data: "{'username':'" + document.getElementById('txtSearch').value + "'}",
dataType: "json",
success: function (data) {
response(data.d);
},
error: function (result) {
txtSearch.focus();
}
});
}
});

}

این تکست باکستون به id و class دقت کنید

<input type="text" id="txtSearch" value="نام کاربری" class="autosuggest" />

این هم کد C#‎‎ که باید در قسمت کدها قرار بدین
[WebMethod]
public static List<string> GetAutoCompleteData(string username)
{
List<string> result = new List<string>();
SqlDataReader dr = cp.ReaderAction("CustomerName", new SqlParameter("@username", username));//select از دیتابیس
while (dr.Read())
{
result.Add(dr["user_name"].ToString());
}
cpl.cn.Close();//بستن کانکشن sql
return result;
}

asgharsosol
جمعه 06 دی 1392, 14:13 عصر
باسلام.
خیلی ممنون که وقت گذاشتین.
کلاس autosuggest رو از کجا باید به برنامم اضافه کنم؟
همچنین لینک هایی که مربوط به کدهای جاوااسکریپت میشه رو چطور باید به برنامم اضافه کنم؟
الان این کد رو تو برنامم کپی کردم ولی اجرا نشد.

kamranetemadi
جمعه 06 دی 1392, 14:31 عصر
ببخشید توضیحات ندادم
کلاس autosuggest فقط برای این قسمت استفاده شده
$(".autosuggest").autocomplete({
و هرطور دیگه که خواستید میتونید این کارو انجام بدین
-------------------
url: "order.aspx/GetAutoCompleteData",
این آدرس صفحه و متودیه که کد C# رو اونجا قرار دادین
-------------------
مثلا برای من وب متود GetAutoCompleteData داخل صفحه order.aspx قرار داره
[WebMethod]
public static List<string> GetAutoCompleteData(string username)
{
List<string> result = new List<string>();
SqlDataReader dr = cp.ReaderAction("CustomerName", new SqlParameter("@username", username));//select از دیتابیس
while (dr.Read())
{
result.Add(dr["user_name"].ToString());
}
cpl.cn.Close();//بستن کانکشن sql
return result;
}

asgharsosol
جمعه 06 دی 1392, 15:24 عصر
سلام.
خیلی ممنون.
ببخشید که دوباره مزاحم میشم.
کدی رو که نوشتین رو وقتی اجرا میکنم دائما erro چاپ میکنه.
درصورتی که از بانکم اطلاعات دریافت میشه و داخل لیست قرار داده میشه.
اینو به طور جداگانه امتحان کردم . دیدم که لیستم مقدار داره.
ولی موقع اجرای کد جاوا اسکریپت محتوای لیست تو textbox چاپ نمیشه و متن erro چاپ میشه.
میشه ازتون خواهش کنم کدی که تو ویژوال نوشتین رو بهم بفرستین.(یه عکس از صفحه تون بگیرین و یا خود صفحه رو بهم بفرستین )
شاید من یه جاهایی رو اشتباه مینویسم ولی خودم متوجه نیستم.
چون من از جاوااسکریپت هیچی بلد نیستم.

مثلا الان نمیدونم" type:"POST برا چی هست و یا contentType: "application/json; charset=utf-8"
ممنون میشم اگه این لطف رو در حقم بکنید.

kamranetemadi
جمعه 06 دی 1392, 15:34 عصر
ممکنه کدی که نوشتید رو اینجا قرار بدین!

asgharsosol
جمعه 06 دی 1392, 16:18 عصر
این قسمت سی شارپش که کار میکنه:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Text;
using System.Configuration;

public partial class administrator : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
public static List<string> GetAutoCompleteData(string name)
{
List<string> result = new List<string>();
SqlDataReader reader;
string connectionstring = "Server=yazahra-PC;Database=110.dehbidstone;Integrated Security=true";
SqlConnection con = new SqlConnection(connectionstring);
con.Open();
SqlCommand command = new SqlCommand("select name from user_information where name like '%'+@SearchText+'%'", con);

command.Parameters.AddWithValue("@SearchText", name);

reader = command.ExecuteReader();
while (reader.Read())
{
result.Add(reader["name"].ToString());
}

con.Close();
reader.Close();
return (result);


}





اینم قسمت جاوااسکریپتش که کار نمیکنه:

<script src="qa/js/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
SearchText();
});
function SearchText() {
$(".autosuggest").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "administrator.aspx/GetAutoCompleteData",
data: "{'username':'" + document.getElementById('txtSearch').value + "'}",
dataType: "json",
success: function (data) {
response(data.d);
},
error: function (result) {
alert("Error");
}
});
}
});
}
</script>
اینم تکست باکسم:

<input type="text" id="txtSearch" value="نام کاربری" class="autosuggest" />

kamranetemadi
جمعه 06 دی 1392, 16:37 عصر
[WebMethod] رو بالای متودتون نذاشتین

asgharsosol
جمعه 06 دی 1392, 18:54 عصر
[WebMethod] رو هم اضافه کردم.
بازم error چاپ میکنه.
میشه خواهش کنم این کد منو یه بار تو سیستم خودتون اجرا کنید و اشکالاتشو بگیرید.
البته اگه وقت دارین.
هرچی تلاش میکنم درستش کنم جواب نمیده.
موندم توش.

kamranetemadi
جمعه 06 دی 1392, 19:06 عصر
این قسمت پارامتری ورودی متودتونه
data: "{'username':'" + document.getElementById('txtSearch').value + "'}",
که شما اسم اونو name گذشاتین
پس باین اینجا هم تغییر کنه
data: "{'name':'" + document.getElementById('txtSearch').value + "'}",

asgharsosol
جمعه 06 دی 1392, 19:16 عصر
درست شد.
الان جواب میده.
خدا خیرتون بده.
خیلی خیلی ممنونم که کارمو راه انداختین.:تشویق:

kamranetemadi
جمعه 06 دی 1392, 21:19 عصر
خواهش میکنم:لبخندساده: