PDA

View Full Version : حرفه ای: مشکل در کار با AutoCompelete در AjaxToolkit



Mohandes2009
پنج شنبه 05 مرداد 1391, 23:46 عصر
سلام
من کل نت را زیر و رو کردم جواب سوالم را نیافتم....

تابع وب سرویس من در فایل .asmx صدا زده نمیشه نمیدونم چرا؟!!!!!!

چیکار کنم؟

alirat
جمعه 06 مرداد 1391, 00:15 صبح
باید این متد اول فراخوانی بشه :
[WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static CascadingDropDownNameValue[] GetDropDownContentsPageMethod(string knownCategoryValues, string category)
{
return new YourServiceFileName().YourMethodInYourServiceFile( knownCategoryValues, category);
}

و این خاصیت این طور تنظیم بشه
ServiceMethod="GetDropDownContentsPageMethod"

و حالا در aspx.cs این رو وارد کن :
using your asmx.cs Namespace

امیدوارم کمکت کرده باشم!

aynehband
جمعه 06 مرداد 1391, 02:26 صبح
سلام
برای این کار باید وب سرویس را روی سرور تست کنی.
اما راهی که من استفاده میکنم استفاده از وب متد در یک صفحه است. میتونه صفحه خودت هم نباشه یک صفحه دیگه باشه. دیگه درگیر لود کردن وب سرویس هم نمیشی.
این لینک را ببین: http://www.asp.net/ajaxlibrary/act_AutoComplete_Simple.ashx

Mohandes2009
جمعه 06 مرداد 1391, 09:44 صبح
هیچ کدوم کمکی نکرد ولی تشکر که جواب دادید

وب سرویس من کدش اینه:



using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Web.Script.Services;



[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class FindCoustomer : System.Web.Services.WebService {

public FindCoustomer ()
{
}


[WebMethod]
public static string[] GetCompletionList(string prefixText)
{
RaySupportSDataContext linq = new RaySupportSDataContext();
string[] list = linq.TCoustInfos
.Where(w => w.Company.Contains(prefixText))
.OrderBy(w => w.Company)
.Select(w => w.Company).ToArray();

return list;
}

}





وو کد HTML هم این :



<asp:TextBox ID="txtCompany"
runat="server"
AutoPostBack="True"
Font-Names="Tahoma"
Font-Size="X-Small"
OnTextChanged="txtCompany_TextChanged"
Width="150px"></asp:TextBox>


<ajax:AutoCompleteExtender
ID="AutoCompleteExtender1"
runat="server"
TargetControlID="txtCompany"
MinimumPrefixLength="1"
EnableCaching="true"
CompletionSetCount="1"
CompletionInterval="1000"
ServiceMethod="GetCompletionList"
ServicePath="FindCoustomer.asmx" >
</ajax:AutoCompleteExtender>



کجاش مورد داره؟

البته این کد ها در صفحه خام یعنی صفحه ای که از Master به ارث نمیبره مثه شربت کار میکنه ولی تو صفحاتی که از مستر به ارث میبره اصلا متد وب سرویس صدا زده نمیشه!!!!

aliblue
جمعه 06 مرداد 1391, 09:54 صبح
توی مستر ScriptManager گذاشتی؟

Mohandes2009
جمعه 06 مرداد 1391, 09:57 صبح
توی مستر ScriptManager گذاشتی؟

نه در مستر نگذاشتم ولی تو همون صفحه ای که این کنترل هست گذاشتم و باید باشه تا کار کنه

aliblue
جمعه 06 مرداد 1391, 10:43 صبح
مطمئن نیستم ولی فکر کنم توی مستر حتما باید ScriptManager باشه و توی content باید ScriptManagerProxy باشه.

Mohandes2009
جمعه 06 مرداد 1391, 10:50 صبح
مطمئن نیستم ولی فکر کنم توی مستر حتما باید ScriptManager باشه و توی content باید ScriptManagerProxy باشه.


کار نمیکنه بازم :عصبانی++:

Mohandes2009
جمعه 06 مرداد 1391, 10:54 صبح
ببین اصلا نمیره تو صفحه *.asmx نمیدونم چرا!!!!! یه گیری هست که اطلا نمیفرستش به این صفحه!!!

TeacherMath
جمعه 06 مرداد 1391, 11:41 صبح
وب سرویس نباید استاتیک باشد. یعنی به این صورت تغییرش بده.
[WebMethod]
public string[] GetCompletionList(string prefixText)
{
RaySupportSDataContext linq = new RaySupportSDataContext();
string[] list = linq.TCoustInfos
.Where(w => w.Company.Contains(prefixText))
.OrderBy(w => w.Company)
.Select(w => w.Company).ToArray();

return list;
}

aynehband
جمعه 06 مرداد 1391, 12:31 عصر
من به اون روشی که گفتم توی وب یوزر کنترل ، اون داخل یک صفحه و صفحه داخل مستر هستش و الان هم داره کار میکنه، هلو.
این کد وب یوزر کنترلمه
<asp:AutoCompleteExtender ID="txtMovie_AutoCompleteExtender" runat="server"
DelimiterCharacters="-" Enabled="True" ServiceMethod="GetCompletionList"
ServicePath="~/Controls/SANA_UserSelectService.aspx" TargetControlID="txtMovie" UseContextKey="True"
ShowOnlyCurrentWordInCompletionListItem="true"
FirstRowSelected="true" ></asp:AutoCompleteExtender>

این هم کد صفحه دارای متد(SANA_UserSelectService.aspx):





using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using PardisLivePortal.Apps.SANA.Modules.EF;

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

}
[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
public static string[] GetCompletionList(string prefixText, int count, string contextKey)
{
SANA_EF sana = new SANA_EF();
long cid=1;

string[] users = (from c in sana.AAA_UserFull

select c.FullNameDescp).ToArray();
return (from m in users where m.Contains(prefixText)
select m).Take(count).ToArray();
}
}
اسکریپت را هم هر جا میگذارم کار میکنه.

TeacherMath
جمعه 06 مرداد 1391, 13:40 عصر
دوست عزیز با این روش که کار میکنه .ایشون می خوان با وب سرویس توی یه webservice.asmx این کار رو انجام بده.

Mohandes2009
چهارشنبه 11 مرداد 1391, 11:31 صبح
حل شد...............

TeacherMath
چهارشنبه 11 مرداد 1391, 12:46 عصر
حل شد...............

چه طوری ؟؟؟؟؟؟؟

moferferi
چهارشنبه 11 مرداد 1391, 21:09 عصر
سلام.
چرا از جی کوئری استفاده نمیکنید.
http://jqueryui.com/demos/autocomplete/