AJAX - AutoCompleteExtender ASP.Net 2.0 (Page Method vs. Web Servi

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I have tied an AutoCompleteExtender to a textbox to indicate suggestions to
the user. Everything works fine if I utilize a webservice to fetch the
results. However, I want to put the web service code into a page method. I
have run the debugger only to find that the [WebMethod] is never entered.
Here are some of the things I have already tried with no success. It appears
that this is a common problem.

-Added the [WebMethod] attribute to the top of the code-behind method.
-Added/removed "Static" as part of the public method definition.
-Removed the "ServicePath" attribute from the AutoCompleteExtender .aspx page.

My textbox and extender control are embedded into a user control(.ascx) that
is placed within a ContentPanel inherited from a MasterPage. I'm not sure if
this could be part of the problem. As I view the browser source code, the
javascript renders the "ServicePath" to be looking by default at my aspx
page, but my [WebMethod] lives in pagename.ascx.cs. Also, I have tried
including "ServicePath=pagename.ascx.cs" and still no luck.

At this point, I don't know what else to try. The main reason I'm wanting
to move to a page method is because I need access to controls which aren't
available to the web service. Also, I don't think my needs here constitute
the need for a web service.

Any help would be greatly appreciated!

Thanks,

Trent
 
Hello,

you'll have to specify the [ScriptMethod] attribute in addition to the
[WebService] attribute.

Best regards,
Henning Krause
 
I applied [ScriptMethod] immediately after [WebService] and that didn't fix
it. Any other thoughts? Thanks!

Henning Krause said:
Hello,

you'll have to specify the [ScriptMethod] attribute in addition to the
[WebService] attribute.

Best regards,
Henning Krause

Trent said:
I have tied an AutoCompleteExtender to a textbox to indicate suggestions to
the user. Everything works fine if I utilize a webservice to fetch the
results. However, I want to put the web service code into a page method.
I
have run the debugger only to find that the [WebMethod] is never entered.
Here are some of the things I have already tried with no success. It
appears
that this is a common problem.

-Added the [WebMethod] attribute to the top of the code-behind method.
-Added/removed "Static" as part of the public method definition.
-Removed the "ServicePath" attribute from the AutoCompleteExtender .aspx
page.

My textbox and extender control are embedded into a user control(.ascx)
that
is placed within a ContentPanel inherited from a MasterPage. I'm not sure
if
this could be part of the problem. As I view the browser source code, the
javascript renders the "ServicePath" to be looking by default at my aspx
page, but my [WebMethod] lives in pagename.ascx.cs. Also, I have tried
including "ServicePath=pagename.ascx.cs" and still no luck.

At this point, I don't know what else to try. The main reason I'm wanting
to move to a page method is because I need access to controls which aren't
available to the web service. Also, I don't think my needs here
constitute
the need for a web service.

Any help would be greatly appreciated!

Thanks,

Trent
 
Hello,

I've a working autocomplete extender using this schema:

In Codebehind:

[WebMethod]
[ScriptMethod]
public static string MyMethod(string contextKey)
{}

In aspx site:

<ajaxToolkit:AutoCompleteExtender runat="server"
ID="tbAutoCompleteExtender" TargetControlID="tbTextBox"
ServiceMethod="MyMethod"
MinimumPrefixLength="2" CompletionInterval="1000"
EnableCaching="true"
CompletionSetCount="12" />

Note that code-behind method must be in the .aspx file, even if the
autocomplete extender is in a usercontrol.

Do you have the latest version of the Ajax toolkit installed? It's from
february... so only a few days old.

Best regards,
Henning Krause


Trent said:
I applied [ScriptMethod] immediately after [WebService] and that didn't fix
it. Any other thoughts? Thanks!

Henning Krause said:
Hello,

you'll have to specify the [ScriptMethod] attribute in addition to the
[WebService] attribute.

Best regards,
Henning Krause

Trent said:
I have tied an AutoCompleteExtender to a textbox to indicate suggestions
to
the user. Everything works fine if I utilize a webservice to fetch the
results. However, I want to put the web service code into a page
method.
I
have run the debugger only to find that the [WebMethod] is never
entered.
Here are some of the things I have already tried with no success. It
appears
that this is a common problem.

-Added the [WebMethod] attribute to the top of the code-behind method.
-Added/removed "Static" as part of the public method definition.
-Removed the "ServicePath" attribute from the AutoCompleteExtender
.aspx
page.

My textbox and extender control are embedded into a user control(.ascx)
that
is placed within a ContentPanel inherited from a MasterPage. I'm not
sure
if
this could be part of the problem. As I view the browser source code,
the
javascript renders the "ServicePath" to be looking by default at my
aspx
page, but my [WebMethod] lives in pagename.ascx.cs. Also, I have tried
including "ServicePath=pagename.ascx.cs" and still no luck.

At this point, I don't know what else to try. The main reason I'm
wanting
to move to a page method is because I need access to controls which
aren't
available to the web service. Also, I don't think my needs here
constitute
the need for a web service.

Any help would be greatly appreciated!

Thanks,

Trent
 
Of course, the method signature in the code-behind file must be:

[WebMethod]
[ScriptMethod]
public static string[] MyMethod(string prefixText, int count)

Best regards,
Henning Krause


Henning Krause said:
Hello,

I've a working autocomplete extender using this schema:

In Codebehind:

[WebMethod]
[ScriptMethod]
public static string MyMethod(string contextKey)
{}

In aspx site:

<ajaxToolkit:AutoCompleteExtender runat="server"
ID="tbAutoCompleteExtender" TargetControlID="tbTextBox"

ServiceMethod="MyMethod" MinimumPrefixLength="2" CompletionInterval="1000"
EnableCaching="true"
CompletionSetCount="12" />

Note that code-behind method must be in the .aspx file, even if the
autocomplete extender is in a usercontrol.

Do you have the latest version of the Ajax toolkit installed? It's from
february... so only a few days old.

Best regards,
Henning Krause


Trent said:
I applied [ScriptMethod] immediately after [WebService] and that didn't
fix
it. Any other thoughts? Thanks!

Henning Krause said:
Hello,

you'll have to specify the [ScriptMethod] attribute in addition to the
[WebService] attribute.

Best regards,
Henning Krause

I have tied an AutoCompleteExtender to a textbox to indicate
suggestions to
the user. Everything works fine if I utilize a webservice to fetch
the
results. However, I want to put the web service code into a page
method.
I
have run the debugger only to find that the [WebMethod] is never
entered.
Here are some of the things I have already tried with no success. It
appears
that this is a common problem.

-Added the [WebMethod] attribute to the top of the code-behind method.
-Added/removed "Static" as part of the public method definition.
-Removed the "ServicePath" attribute from the AutoCompleteExtender
.aspx
page.

My textbox and extender control are embedded into a user
control(.ascx)
that
is placed within a ContentPanel inherited from a MasterPage. I'm not
sure
if
this could be part of the problem. As I view the browser source code,
the
javascript renders the "ServicePath" to be looking by default at my
aspx
page, but my [WebMethod] lives in pagename.ascx.cs. Also, I have
tried
including "ServicePath=pagename.ascx.cs" and still no luck.

At this point, I don't know what else to try. The main reason I'm
wanting
to move to a page method is because I need access to controls which
aren't
available to the web service. Also, I don't think my needs here
constitute
the need for a web service.

Any help would be greatly appreciated!

Thanks,

Trent
 
Hi Henning,

I have downloaded the February 6 version of toolkit, removed the toolkit
from the toolbox, re-added it, and removed the dll/pdb and readded the
reference as well. My codebehind is in pagename.aspx.cs, rather than being
in pagename.ascx.cs. When I type into my textbox, a popup does appear and it
contains "undefined", "undefined", "undefined", "undefined", "undefined"
which goes on and on seems like forever. If I set a breakpoint in the
"suggestion" codebehind method, it never breaks.

Thanks!

Henning Krause said:
Hello,

I've a working autocomplete extender using this schema:

In Codebehind:

[WebMethod]
[ScriptMethod]
public static string MyMethod(string contextKey)
{}

In aspx site:

<ajaxToolkit:AutoCompleteExtender runat="server"
ID="tbAutoCompleteExtender" TargetControlID="tbTextBox"
ServiceMethod="MyMethod"
MinimumPrefixLength="2" CompletionInterval="1000"
EnableCaching="true"
CompletionSetCount="12" />

Note that code-behind method must be in the .aspx file, even if the
autocomplete extender is in a usercontrol.

Do you have the latest version of the Ajax toolkit installed? It's from
february... so only a few days old.

Best regards,
Henning Krause


Trent said:
I applied [ScriptMethod] immediately after [WebService] and that didn't fix
it. Any other thoughts? Thanks!

Henning Krause said:
Hello,

you'll have to specify the [ScriptMethod] attribute in addition to the
[WebService] attribute.

Best regards,
Henning Krause

I have tied an AutoCompleteExtender to a textbox to indicate suggestions
to
the user. Everything works fine if I utilize a webservice to fetch the
results. However, I want to put the web service code into a page
method.
I
have run the debugger only to find that the [WebMethod] is never
entered.
Here are some of the things I have already tried with no success. It
appears
that this is a common problem.

-Added the [WebMethod] attribute to the top of the code-behind method.
-Added/removed "Static" as part of the public method definition.
-Removed the "ServicePath" attribute from the AutoCompleteExtender
.aspx
page.

My textbox and extender control are embedded into a user control(.ascx)
that
is placed within a ContentPanel inherited from a MasterPage. I'm not
sure
if
this could be part of the problem. As I view the browser source code,
the
javascript renders the "ServicePath" to be looking by default at my
aspx
page, but my [WebMethod] lives in pagename.ascx.cs. Also, I have tried
including "ServicePath=pagename.ascx.cs" and still no luck.

At this point, I don't know what else to try. The main reason I'm
wanting
to move to a page method is because I need access to controls which
aren't
available to the web service. Also, I don't think my needs here
constitute
the need for a web service.

Any help would be greatly appreciated!

Thanks,

Trent
 
Hello,

do you have enabled the property EnablePageMethods on the ScriptManager in
your aspx file?

Best regards,
Henning Krause

Trent said:
Hi Henning,

I have downloaded the February 6 version of toolkit, removed the toolkit
from the toolbox, re-added it, and removed the dll/pdb and readded the
reference as well. My codebehind is in pagename.aspx.cs, rather than
being
in pagename.ascx.cs. When I type into my textbox, a popup does appear and
it
contains "undefined", "undefined", "undefined", "undefined", "undefined"
which goes on and on seems like forever. If I set a breakpoint in the
"suggestion" codebehind method, it never breaks.

Thanks!

Henning Krause said:
Hello,

I've a working autocomplete extender using this schema:

In Codebehind:

[WebMethod]
[ScriptMethod]
public static string MyMethod(string contextKey)
{}

In aspx site:

<ajaxToolkit:AutoCompleteExtender runat="server"
ID="tbAutoCompleteExtender" TargetControlID="tbTextBox"

ServiceMethod="MyMethod"
MinimumPrefixLength="2" CompletionInterval="1000"
EnableCaching="true"
CompletionSetCount="12" />

Note that code-behind method must be in the .aspx file, even if the
autocomplete extender is in a usercontrol.

Do you have the latest version of the Ajax toolkit installed? It's from
february... so only a few days old.

Best regards,
Henning Krause


Trent said:
I applied [ScriptMethod] immediately after [WebService] and that didn't
fix
it. Any other thoughts? Thanks!

:

Hello,

you'll have to specify the [ScriptMethod] attribute in addition to the
[WebService] attribute.

Best regards,
Henning Krause

I have tied an AutoCompleteExtender to a textbox to indicate
suggestions
to
the user. Everything works fine if I utilize a webservice to fetch
the
results. However, I want to put the web service code into a page
method.
I
have run the debugger only to find that the [WebMethod] is never
entered.
Here are some of the things I have already tried with no success.
It
appears
that this is a common problem.

-Added the [WebMethod] attribute to the top of the code-behind
method.
-Added/removed "Static" as part of the public method definition.
-Removed the "ServicePath" attribute from the AutoCompleteExtender
.aspx
page.

My textbox and extender control are embedded into a user
control(.ascx)
that
is placed within a ContentPanel inherited from a MasterPage. I'm
not
sure
if
this could be part of the problem. As I view the browser source
code,
the
javascript renders the "ServicePath" to be looking by default at my
aspx
page, but my [WebMethod] lives in pagename.ascx.cs. Also, I have
tried
including "ServicePath=pagename.ascx.cs" and still no luck.

At this point, I don't know what else to try. The main reason I'm
wanting
to move to a page method is because I need access to controls which
aren't
available to the web service. Also, I don't think my needs here
constitute
the need for a web service.

Any help would be greatly appreciated!

Thanks,

Trent
 
Yessir, I do!

Henning Krause said:
Hello,

do you have enabled the property EnablePageMethods on the ScriptManager in
your aspx file?

Best regards,
Henning Krause

Trent said:
Hi Henning,

I have downloaded the February 6 version of toolkit, removed the toolkit
from the toolbox, re-added it, and removed the dll/pdb and readded the
reference as well. My codebehind is in pagename.aspx.cs, rather than
being
in pagename.ascx.cs. When I type into my textbox, a popup does appear and
it
contains "undefined", "undefined", "undefined", "undefined", "undefined"
which goes on and on seems like forever. If I set a breakpoint in the
"suggestion" codebehind method, it never breaks.

Thanks!

Henning Krause said:
Hello,

I've a working autocomplete extender using this schema:

In Codebehind:

[WebMethod]
[ScriptMethod]
public static string MyMethod(string contextKey)
{}

In aspx site:

<ajaxToolkit:AutoCompleteExtender runat="server"
ID="tbAutoCompleteExtender" TargetControlID="tbTextBox"

ServiceMethod="MyMethod"
MinimumPrefixLength="2" CompletionInterval="1000"
EnableCaching="true"
CompletionSetCount="12" />

Note that code-behind method must be in the .aspx file, even if the
autocomplete extender is in a usercontrol.

Do you have the latest version of the Ajax toolkit installed? It's from
february... so only a few days old.

Best regards,
Henning Krause


I applied [ScriptMethod] immediately after [WebService] and that didn't
fix
it. Any other thoughts? Thanks!

:

Hello,

you'll have to specify the [ScriptMethod] attribute in addition to the
[WebService] attribute.

Best regards,
Henning Krause

I have tied an AutoCompleteExtender to a textbox to indicate
suggestions
to
the user. Everything works fine if I utilize a webservice to fetch
the
results. However, I want to put the web service code into a page
method.
I
have run the debugger only to find that the [WebMethod] is never
entered.
Here are some of the things I have already tried with no success.
It
appears
that this is a common problem.

-Added the [WebMethod] attribute to the top of the code-behind
method.
-Added/removed "Static" as part of the public method definition.
-Removed the "ServicePath" attribute from the AutoCompleteExtender
.aspx
page.

My textbox and extender control are embedded into a user
control(.ascx)
that
is placed within a ContentPanel inherited from a MasterPage. I'm
not
sure
if
this could be part of the problem. As I view the browser source
code,
the
javascript renders the "ServicePath" to be looking by default at my
aspx
page, but my [WebMethod] lives in pagename.ascx.cs. Also, I have
tried
including "ServicePath=pagename.ascx.cs" and still no luck.

At this point, I don't know what else to try. The main reason I'm
wanting
to move to a page method is because I need access to controls which
aren't
available to the web service. Also, I don't think my needs here
constitute
the need for a web service.

Any help would be greatly appreciated!

Thanks,

Trent
 
Here is my code.

**********pagename.ascx
<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePageMethods="true">

</asp:ScriptManager>
<cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
TargetControlID="txtDestination"
CompletionSetCount="10"
MinimumPrefixLength="1"
EnableCaching="true"
ServiceMethod="GetDest"/>

**********pagename.aspx.cs
[WebMethod]
[ScriptMethod]
public static string[] GetDest(string prefixText, int count)
{

string[] result;
result = new string[4];
result[0] = prefixText + "AAAAAAAA";
result[1] = prefixText + "DDDDDDDD";
result[2] = prefixText + "MMMMMMMM";
result[3] = prefixText + "VVVVVVVV";
return result;
}

Henning Krause said:
Hello,

do you have enabled the property EnablePageMethods on the ScriptManager in
your aspx file?

Best regards,
Henning Krause

Trent said:
Hi Henning,

I have downloaded the February 6 version of toolkit, removed the toolkit
from the toolbox, re-added it, and removed the dll/pdb and readded the
reference as well. My codebehind is in pagename.aspx.cs, rather than
being
in pagename.ascx.cs. When I type into my textbox, a popup does appear and
it
contains "undefined", "undefined", "undefined", "undefined", "undefined"
which goes on and on seems like forever. If I set a breakpoint in the
"suggestion" codebehind method, it never breaks.

Thanks!

Henning Krause said:
Hello,

I've a working autocomplete extender using this schema:

In Codebehind:

[WebMethod]
[ScriptMethod]
public static string MyMethod(string contextKey)
{}

In aspx site:

<ajaxToolkit:AutoCompleteExtender runat="server"
ID="tbAutoCompleteExtender" TargetControlID="tbTextBox"

ServiceMethod="MyMethod"
MinimumPrefixLength="2" CompletionInterval="1000"
EnableCaching="true"
CompletionSetCount="12" />

Note that code-behind method must be in the .aspx file, even if the
autocomplete extender is in a usercontrol.

Do you have the latest version of the Ajax toolkit installed? It's from
february... so only a few days old.

Best regards,
Henning Krause


I applied [ScriptMethod] immediately after [WebService] and that didn't
fix
it. Any other thoughts? Thanks!

:

Hello,

you'll have to specify the [ScriptMethod] attribute in addition to the
[WebService] attribute.

Best regards,
Henning Krause

I have tied an AutoCompleteExtender to a textbox to indicate
suggestions
to
the user. Everything works fine if I utilize a webservice to fetch
the
results. However, I want to put the web service code into a page
method.
I
have run the debugger only to find that the [WebMethod] is never
entered.
Here are some of the things I have already tried with no success.
It
appears
that this is a common problem.

-Added the [WebMethod] attribute to the top of the code-behind
method.
-Added/removed "Static" as part of the public method definition.
-Removed the "ServicePath" attribute from the AutoCompleteExtender
.aspx
page.

My textbox and extender control are embedded into a user
control(.ascx)
that
is placed within a ContentPanel inherited from a MasterPage. I'm
not
sure
if
this could be part of the problem. As I view the browser source
code,
the
javascript renders the "ServicePath" to be looking by default at my
aspx
page, but my [WebMethod] lives in pagename.ascx.cs. Also, I have
tried
including "ServicePath=pagename.ascx.cs" and still no luck.

At this point, I don't know what else to try. The main reason I'm
wanting
to move to a page method is because I need access to controls which
aren't
available to the web service. Also, I don't think my needs here
constitute
the need for a web service.

Any help would be greatly appreciated!

Thanks,

Trent
 
Hello,

works like charm here.

Here is the complete source:

Default.aspx.cs:

[WebMethod]
[ScriptMethod]
public static string[] GetTextBoxEntries(string prefixText, int
count)
{
string[] result;
result = new string[4];
result[0] = prefixText + "AAAAAAAA";
result[1] = prefixText + "DDDDDDDD";
result[2] = prefixText + "MMMMMMMM";
result[3] = prefixText + "VVVVVVVV";
return result;
}

======================

UserControl.ascx:

<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePartialRendering="true" EnablePageMethods="true" />
<asp:TextBox runat="server" ID="tbTextBox" />
<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
ServiceMethod="GetTextBoxEntries" TargetControlID="tbTextBox"
CompletionSetCount="10" MinimumPrefixLength="1" EnableCaching="true" />


Changes in the web.config:

<system.web>
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI"
assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit"
namespace="AjaxControlToolkit" />
</controls>
</pages>
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add verb="*" path="*_AppService.axd" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add verb="GET,HEAD" path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions,
Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
validate="false"/>
</httpHandlers>

<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
</system.web>

Best regards,
Henning Krause


Trent said:
Here is my code.

**********pagename.ascx
<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePageMethods="true">

</asp:ScriptManager>
<cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
TargetControlID="txtDestination"
CompletionSetCount="10"
MinimumPrefixLength="1"
EnableCaching="true"
ServiceMethod="GetDest"/>

**********pagename.aspx.cs
[WebMethod]
[ScriptMethod]
public static string[] GetDest(string prefixText, int count)
{

string[] result;
result = new string[4];
result[0] = prefixText + "AAAAAAAA";
result[1] = prefixText + "DDDDDDDD";
result[2] = prefixText + "MMMMMMMM";
result[3] = prefixText + "VVVVVVVV";
return result;
}

Henning Krause said:
Hello,

do you have enabled the property EnablePageMethods on the ScriptManager
in
your aspx file?

Best regards,
Henning Krause

Trent said:
Hi Henning,

I have downloaded the February 6 version of toolkit, removed the
toolkit
from the toolbox, re-added it, and removed the dll/pdb and readded the
reference as well. My codebehind is in pagename.aspx.cs, rather than
being
in pagename.ascx.cs. When I type into my textbox, a popup does appear
and
it
contains "undefined", "undefined", "undefined", "undefined",
"undefined"
which goes on and on seems like forever. If I set a breakpoint in the
"suggestion" codebehind method, it never breaks.

Thanks!

:

Hello,

I've a working autocomplete extender using this schema:

In Codebehind:

[WebMethod]
[ScriptMethod]
public static string MyMethod(string contextKey)
{}

In aspx site:

<ajaxToolkit:AutoCompleteExtender runat="server"
ID="tbAutoCompleteExtender" TargetControlID="tbTextBox"

ServiceMethod="MyMethod"
MinimumPrefixLength="2" CompletionInterval="1000"

EnableCaching="true"
CompletionSetCount="12" />

Note that code-behind method must be in the .aspx file, even if the
autocomplete extender is in a usercontrol.

Do you have the latest version of the Ajax toolkit installed? It's
from
february... so only a few days old.

Best regards,
Henning Krause


I applied [ScriptMethod] immediately after [WebService] and that
didn't
fix
it. Any other thoughts? Thanks!

:

Hello,

you'll have to specify the [ScriptMethod] attribute in addition to
the
[WebService] attribute.

Best regards,
Henning Krause

I have tied an AutoCompleteExtender to a textbox to indicate
suggestions
to
the user. Everything works fine if I utilize a webservice to
fetch
the
results. However, I want to put the web service code into a page
method.
I
have run the debugger only to find that the [WebMethod] is never
entered.
Here are some of the things I have already tried with no success.
It
appears
that this is a common problem.

-Added the [WebMethod] attribute to the top of the code-behind
method.
-Added/removed "Static" as part of the public method definition.
-Removed the "ServicePath" attribute from the
AutoCompleteExtender
.aspx
page.

My textbox and extender control are embedded into a user
control(.ascx)
that
is placed within a ContentPanel inherited from a MasterPage. I'm
not
sure
if
this could be part of the problem. As I view the browser source
code,
the
javascript renders the "ServicePath" to be looking by default at
my
aspx
page, but my [WebMethod] lives in pagename.ascx.cs. Also, I have
tried
including "ServicePath=pagename.ascx.cs" and still no luck.

At this point, I don't know what else to try. The main reason
I'm
wanting
to move to a page method is because I need access to controls
which
aren't
available to the web service. Also, I don't think my needs here
constitute
the need for a web service.

Any help would be greatly appreciated!

Thanks,

Trent
 
Hello Henning,

Thank you so much for your dedicated help on this issue. I had added the
new web.config segment of <httpHandlers> but hadn't added <httpModules>.
Once I added that, it started working like a champ for me as well :)

Thanks again,

Trent

Henning Krause said:
Hello,

works like charm here.

Here is the complete source:

Default.aspx.cs:

[WebMethod]
[ScriptMethod]
public static string[] GetTextBoxEntries(string prefixText, int
count)
{
string[] result;
result = new string[4];
result[0] = prefixText + "AAAAAAAA";
result[1] = prefixText + "DDDDDDDD";
result[2] = prefixText + "MMMMMMMM";
result[3] = prefixText + "VVVVVVVV";
return result;
}

======================

UserControl.ascx:

<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePartialRendering="true" EnablePageMethods="true" />
<asp:TextBox runat="server" ID="tbTextBox" />
<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
ServiceMethod="GetTextBoxEntries" TargetControlID="tbTextBox"
CompletionSetCount="10" MinimumPrefixLength="1" EnableCaching="true" />


Changes in the web.config:

<system.web>
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI"
assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit"
namespace="AjaxControlToolkit" />
</controls>
</pages>
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add verb="*" path="*_AppService.axd" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add verb="GET,HEAD" path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions,
Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
validate="false"/>
</httpHandlers>

<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
</system.web>

Best regards,
Henning Krause


Trent said:
Here is my code.

**********pagename.ascx
<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePageMethods="true">

</asp:ScriptManager>
<cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
TargetControlID="txtDestination"
CompletionSetCount="10"
MinimumPrefixLength="1"
EnableCaching="true"
ServiceMethod="GetDest"/>

**********pagename.aspx.cs
[WebMethod]
[ScriptMethod]
public static string[] GetDest(string prefixText, int count)
{

string[] result;
result = new string[4];
result[0] = prefixText + "AAAAAAAA";
result[1] = prefixText + "DDDDDDDD";
result[2] = prefixText + "MMMMMMMM";
result[3] = prefixText + "VVVVVVVV";
return result;
}

Henning Krause said:
Hello,

do you have enabled the property EnablePageMethods on the ScriptManager
in
your aspx file?

Best regards,
Henning Krause

Hi Henning,

I have downloaded the February 6 version of toolkit, removed the
toolkit
from the toolbox, re-added it, and removed the dll/pdb and readded the
reference as well. My codebehind is in pagename.aspx.cs, rather than
being
in pagename.ascx.cs. When I type into my textbox, a popup does appear
and
it
contains "undefined", "undefined", "undefined", "undefined",
"undefined"
which goes on and on seems like forever. If I set a breakpoint in the
"suggestion" codebehind method, it never breaks.

Thanks!

:

Hello,

I've a working autocomplete extender using this schema:

In Codebehind:

[WebMethod]
[ScriptMethod]
public static string MyMethod(string contextKey)
{}

In aspx site:

<ajaxToolkit:AutoCompleteExtender runat="server"
ID="tbAutoCompleteExtender" TargetControlID="tbTextBox"

ServiceMethod="MyMethod"
MinimumPrefixLength="2" CompletionInterval="1000"

EnableCaching="true"
CompletionSetCount="12" />

Note that code-behind method must be in the .aspx file, even if the
autocomplete extender is in a usercontrol.

Do you have the latest version of the Ajax toolkit installed? It's
from
february... so only a few days old.

Best regards,
Henning Krause


I applied [ScriptMethod] immediately after [WebService] and that
didn't
fix
it. Any other thoughts? Thanks!

:

Hello,

you'll have to specify the [ScriptMethod] attribute in addition to
the
[WebService] attribute.

Best regards,
Henning Krause

I have tied an AutoCompleteExtender to a textbox to indicate
suggestions
to
the user. Everything works fine if I utilize a webservice to
fetch
the
results. However, I want to put the web service code into a page
method.
I
have run the debugger only to find that the [WebMethod] is never
entered.
Here are some of the things I have already tried with no success.
It
appears
that this is a common problem.

-Added the [WebMethod] attribute to the top of the code-behind
method.
-Added/removed "Static" as part of the public method definition.
-Removed the "ServicePath" attribute from the
AutoCompleteExtender
.aspx
page.

My textbox and extender control are embedded into a user
control(.ascx)
that
is placed within a ContentPanel inherited from a MasterPage. I'm
not
sure
if
this could be part of the problem. As I view the browser source
code,
the
javascript renders the "ServicePath" to be looking by default at
my
aspx
page, but my [WebMethod] lives in pagename.ascx.cs. Also, I have
tried
including "ServicePath=pagename.ascx.cs" and still no luck.

At this point, I don't know what else to try. The main reason
I'm
wanting
to move to a page method is because I need access to controls
which
aren't
available to the web service. Also, I don't think my needs here
constitute
the need for a web service.

Any help would be greatly appreciated!

Thanks,

Trent
 
Hello Henning,

I have one more issue. To the best of my knowledge, there isn't a way to
pass additional parameters to the method/web service for the
autocompleteextender...do you think that is correct? I now need to access a
value from one of the textboxes on "pagename.ascx". Since the page method is
on the aspx side, I'm not sure how to access this value. I don't want to use
Session state. Any thoughts?

Trent

Henning Krause said:
Hello,

works like charm here.

Here is the complete source:

Default.aspx.cs:

[WebMethod]
[ScriptMethod]
public static string[] GetTextBoxEntries(string prefixText, int
count)
{
string[] result;
result = new string[4];
result[0] = prefixText + "AAAAAAAA";
result[1] = prefixText + "DDDDDDDD";
result[2] = prefixText + "MMMMMMMM";
result[3] = prefixText + "VVVVVVVV";
return result;
}

======================

UserControl.ascx:

<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePartialRendering="true" EnablePageMethods="true" />
<asp:TextBox runat="server" ID="tbTextBox" />
<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
ServiceMethod="GetTextBoxEntries" TargetControlID="tbTextBox"
CompletionSetCount="10" MinimumPrefixLength="1" EnableCaching="true" />


Changes in the web.config:

<system.web>
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI"
assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit"
namespace="AjaxControlToolkit" />
</controls>
</pages>
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add verb="*" path="*_AppService.axd" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add verb="GET,HEAD" path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions,
Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
validate="false"/>
</httpHandlers>

<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
</system.web>

Best regards,
Henning Krause


Trent said:
Here is my code.

**********pagename.ascx
<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePageMethods="true">

</asp:ScriptManager>
<cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
TargetControlID="txtDestination"
CompletionSetCount="10"
MinimumPrefixLength="1"
EnableCaching="true"
ServiceMethod="GetDest"/>

**********pagename.aspx.cs
[WebMethod]
[ScriptMethod]
public static string[] GetDest(string prefixText, int count)
{

string[] result;
result = new string[4];
result[0] = prefixText + "AAAAAAAA";
result[1] = prefixText + "DDDDDDDD";
result[2] = prefixText + "MMMMMMMM";
result[3] = prefixText + "VVVVVVVV";
return result;
}

Henning Krause said:
Hello,

do you have enabled the property EnablePageMethods on the ScriptManager
in
your aspx file?

Best regards,
Henning Krause

Hi Henning,

I have downloaded the February 6 version of toolkit, removed the
toolkit
from the toolbox, re-added it, and removed the dll/pdb and readded the
reference as well. My codebehind is in pagename.aspx.cs, rather than
being
in pagename.ascx.cs. When I type into my textbox, a popup does appear
and
it
contains "undefined", "undefined", "undefined", "undefined",
"undefined"
which goes on and on seems like forever. If I set a breakpoint in the
"suggestion" codebehind method, it never breaks.

Thanks!

:

Hello,

I've a working autocomplete extender using this schema:

In Codebehind:

[WebMethod]
[ScriptMethod]
public static string MyMethod(string contextKey)
{}

In aspx site:

<ajaxToolkit:AutoCompleteExtender runat="server"
ID="tbAutoCompleteExtender" TargetControlID="tbTextBox"

ServiceMethod="MyMethod"
MinimumPrefixLength="2" CompletionInterval="1000"

EnableCaching="true"
CompletionSetCount="12" />

Note that code-behind method must be in the .aspx file, even if the
autocomplete extender is in a usercontrol.

Do you have the latest version of the Ajax toolkit installed? It's
from
february... so only a few days old.

Best regards,
Henning Krause


I applied [ScriptMethod] immediately after [WebService] and that
didn't
fix
it. Any other thoughts? Thanks!

:

Hello,

you'll have to specify the [ScriptMethod] attribute in addition to
the
[WebService] attribute.

Best regards,
Henning Krause

I have tied an AutoCompleteExtender to a textbox to indicate
suggestions
to
the user. Everything works fine if I utilize a webservice to
fetch
the
results. However, I want to put the web service code into a page
method.
I
have run the debugger only to find that the [WebMethod] is never
entered.
Here are some of the things I have already tried with no success.
It
appears
that this is a common problem.

-Added the [WebMethod] attribute to the top of the code-behind
method.
-Added/removed "Static" as part of the public method definition.
-Removed the "ServicePath" attribute from the
AutoCompleteExtender
.aspx
page.

My textbox and extender control are embedded into a user
control(.ascx)
that
is placed within a ContentPanel inherited from a MasterPage. I'm
not
sure
if
this could be part of the problem. As I view the browser source
code,
the
javascript renders the "ServicePath" to be looking by default at
my
aspx
page, but my [WebMethod] lives in pagename.ascx.cs. Also, I have
tried
including "ServicePath=pagename.ascx.cs" and still no luck.

At this point, I don't know what else to try. The main reason
I'm
wanting
to move to a page method is because I need access to controls
which
aren't
available to the web service. Also, I don't think my needs here
constitute
the need for a web service.

Any help would be greatly appreciated!

Thanks,

Trent
 
Back
Top