Showing posts with label control. Show all posts
Showing posts with label control. Show all posts

Wednesday, March 28, 2012

AJAX Calander Behind other Controls

Hi All,

I am using the Ajax Calander Control, I have it working in all and I have it writing to a textbox. I have this placed on a form where there are dropdown lists. It seems that the Cal. control always appears behind these dropdownlists instead of infront, therefore making it not visible.

Any work arounds?
Thanks in advance!!!
Tim

Hi tbraga,

I do not notice this behavior and I use VS.NET 2005 sp1 / Ajax Extentions 1 / AjaxControlToolkit 10920.

Can you post code that replicates this behavior?

Kind regards,
wim


Hi Tbraga,

As far as I know, this is a common issue. We suggest that you should upgrade your AJAX Control Toolkit to the latest version. If this doesn't work, you can set its zIndex properties. For example, $find("CalendarExtender's BehaviorID")._popupDiv.zIndex = large enough number.

function pageLoad(){
$find("CalendarExtender's BehaviorID").add_shown(resetZIndex);
}

function resetZIndex(){

$find("CalendarExtender's BehaviorID")._popupDiv.zIndex = value.

}

I hope this help.

Best regards,

Jonathan

AJAX breaks AdRotator control rendering

Hi,

Does anyone know how to resolve the issue I'm experiencing with AJAX breaking the AdRotator control?

My AdRotators reside in a master page and display fine until a AJAX UpdatePanel is introduced. Once an UpdatePanel is added the AdRotators start to render their HTML output at the very beginning of the page's HTML (before the

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
in my case).

Image without AJAX problem:http://x.yougodo.com/screenshot-good.jpg

Image with AJAX problem:http://x.yougodo.com/screenshot-bad.jpg

Any help would be greatly appreciated.

Cheers

I can't seem to find any other users with your issue. You may want to give this approach a try:http://www.seesharprun.net/2007/08/09/AnAdrotatorAlternative.aspx. Where is your AdRotator located on your MasterPage? I'm assuming you are adding your UpdatePanel inside the Master's ContentTemplate?

Perhaps you can post a small snippet of code that will replicate the issue?

-Damien


Hi Damien,

Thanks for your suggestion, much appreciated - I will take a look.

Was puzzled myself why no-one else seemed to have encountered the same problem?!?

The UpdatePanel is actually located in the *.aspx page rather than the *.master - I'll try and create a small example to re-create later as everything is too intertwined in my current project to post something useful.

P.S. The Google Ads in the screenshots are not in AdRotators, only the image ads you see.


How bizarre... I've not been able to recreate problem creating a simple AJAX / master page scenario?!?

Maybe it's down to some of my non-standard controls - all pages are inherited from my own Page class that adds a bunch of extra properties and methods useful for my project. The control triggering the AJAX callback is also my own roll-your-own page number selecting control.

Quite puzzled as both these own-code-rolled controls successfully use AJAX functionality on other pages. It's jut when the AdRotator is introduced that bizarre results occur. Quite puzzled!


That's interesting that you can't reproduce it. I think your assumption may be correct with your non-standard controls. Do you perhaps have an un-closed element or something? This could be causing some issues. You also may just want to make sure your AJAX environment is setup correctly, you can refer to these common problems/fixes:http://blogs.visoftinc.com/archive/2007/09/23/asp.net-ajax--updatepanel-not-working--common-problems.aspx.

Hope you find your problem!

-Damien


Hi Damien,

Cheers once again for your help - much appreciated. Doesn't seem to be any of the issues described in the link you gave though.

Very bizarre, the output would suggest that somehow the AdRotator is getting to render it's output before the *.master or *.aspx files do?!? No html at all is output to the locations where the AdRotator is placed, only at the top of the page before all other html. Very puzzling.

I've abandoned trying to find a solution for now, coding my own temporary random ad selector for now. The AdRotators were only ever going to be a temporary measure until a fully functioning ad management system is plugged in.

Gavin.

Ajax Beta V.1: Strange behaviour with treeview inside the update panel (Again!)

I have a treevew control ( with dynamically created nodes) that was working great with July CTP. The control no longer works with beta any more:

1. Does not maintain the expanded state during ajax post back ( the nodes expand collapse unexpectly).

2. Strange behaviour if nodes are dynamically populated. This bug was present with the earlier atlas CTP's but was fixed with July CTP.

I have to use the same work around referenced in post:http://forums.asp.net/thread/1203662.aspx

------------------------

Similar issue, I didn’t want the tree to update always. The workaround that I am using is ,

Put tree in update panel (with conditional update).

- Add "TreeNodePopulate" event as a trigger in your update panel

- Turn off the client behaviour of tree expand ( putPopulateNodesFromClient = false ) and let atlas take care of it.

- Use Populate on demand = true.

-------------------------

Is any body else is having similar problem?

You might want to look at the CSS Adapters Beta 3 - they have what appears to be a 'ajaxified' treeview control that does not do full postbacks and retains viewstate on the client side... However, warning... if you do not need the other adaptewrs do not install them in your project as they override everything automatically and there is no method I know of to not allow the adapters controls it targets dynamically or explicitly...

The cool thing though is they provide all the source for it - so it may mean you can at least write an custom extender control for treeview that will integrate nicely with ajax...

Just a suggestion - and as usual unsure if I ever know what I am talking about...

Ajax based Tab control.

Hi all,

I need a Menu control horizontally laid out at the top the screen on a master page as shown below.

Tab1 Tab2 Tab3 Tab4 Tab5

Each tab would navigate to a different page, Tab1 to Page1.aspx, Tab2 to Page2.aspx, ...Tabi to Pagei.aspx etc.

Is it possible to change between different tabs(pages) in a Ajaxy way(so that the user doesnt see the flicker or the progress bar at the bottom of browser on the task bar),

I see that UpdatePanel does not integrate well with asp:menu, and a I saw a couple of posts where people have used the CallBack feature of asp.net 2.0 to attain the effect. Is this the only solution?


Thanks for your time

try it.....

Master.aspx File

<%@. Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<link href="http://links.10026.com/?link=StyleSheet.css" rel="stylesheet" type="text/css" />
<title>Master Page ::</title>
</head>
<body>
<form id="form1" runat="server">
<table cellpadding="0" cellspacing="0" id="MasterContainer" width="100%">
<tr>
<td id="BannerContainer" align="left" colspan="2">
Tab Demo Site
</td>
</tr>
<tr>
<td id="ContentContainer" valign="top" style="height: 19px">
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td colspan="2">
<table cellpadding="0" cellspacing="0" border="0" width="100%" class="TabMenuContainer">
<tr>
<td>
<asp:Menu CssClass="TabMenu" DataSourceID="TabMenuSitemap" HideSelectElements= "True" ID="Menu2" Orientation="Horizontal" runat="server">
<StaticSelectedStyle CssClass="TabMenuItemSelected" />
<StaticMenuItemStyle CssClass="TabMenuItem" />
<StaticMenuStyle CssClass="SiteStaticMenu" />
<StaticHoverStyle CssClass="TabMenuItemHover" />
<DataBindings>
<asp:MenuItemBinding DataMember="SiteMapNode" Depth="0"
NavigateUrlField="Url" TextField="Title" ToolTipField="Description" />
</DataBindings>
</asp:Menu>
</td>
<td class="TabMenuSpacer" width="100%"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="100%" valign="top">
<div id="SiteContent">
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</td>
<td>
<div class="SiteContentSpacer"></div>
</td>
</tr>
</table>
</tr>
</table>
<asp:SiteMapDataSource ID="TabMenuSitemap" runat="server" ShowStartingNode="false" />
</form>
</body>
</html>

WEb.sitemap File

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/ AspNet/SiteMap-File-1.0" >
<siteMapNode url="" title="" description="" roles="*">
<siteMapNode url="~/default.aspx" title="My WebPage" description="The Home Page" roles="*" />
<siteMapNode url="~/default2.aspx" title="My WebPage 1" description="The First Tab" roles="*" />
<siteMapNode url="~/default3.aspx" title="My WebPage 2" description="The Second Tab" roles="*" />
</siteMapNode>
</siteMap>

Smile

Ajax Based Login Control

How can I have ajax based login on my website home page ? How can I use built in login control in asp.net 2.0 to implement ajax ..

I want a login functionality as we use in gmail kindly guide me please

This really depends on how you do your login page. If you're login page is a seperate page (than the rest of your app), AJAX will only help you in that it will not "flick" when someone enter's wrong credentials.

However, if you have a "login" control that is added to a page if they're not logged in, you can use an AJAX callback to add that control do the page. You can use UpdatePanels if you need.


I have my login Control with in the page but i want to sent only that login form to server and remain rest page as it is ...how to do this pls guide


hello.
well, you do have some options here. for instance, you can use the client side validation services and build a simple form that will do just that.
http://www.asp.net/ajax/documentation/live/tutorials/UsingFormsAuthenticationTutorial.aspx

Ajax based custom control with web service

I want to create a simple reusable search pane control.

The idea is to have a textbox and a button. When you press the button you trigger an AJAX call to the server with the textbox value as parameter. The AJAX call then bridge the request to a web service that perform the database search an return a dataset. The dataset is then binded to a repeater in a updatepanel to display result. I've been using a WCF service for the web service.

This work fine if I host the textbox, the button and the result detail ascx file in a ASP.NET Ajax Enabled WebSite.

I try to move this part to a user web control, including the ascx files in resources. I hit the following problem: When I include the control (compiled assembly) in a ASP.Net Ajax Enabled Web site, the control display correctly but the AJAX call fail.

I think that the ScriptManagerProxy setting the AJAX service in my user control fails to find the path of the asmx ServerScript definition within the assembly.

Do you have any idea to make this work smoothly, ideally with only the assembly included in the website project?

Thanks in advance for your help

mavrj

Web user control is not only an assembly, which should include .ascx file and.ascx.cs or.ascx.vb file.There is only one asp:ScriptManager in a Ajax web form. I once tested a Ajax enabled web user control and placed it in a common web form.I found it worked fine. Can you post some codes here? We are going to test it.

Monday, March 26, 2012

AJAX Autocomplete with On mouse over

Hi AJAX xperts,

I have AJAX autocomplete Textbox, which is a user control. i am getting employee details into this text box. upon typing 3 chars it will fetch 20 records which matchs with the prefix text.

I modified _highligted function(item) in Autocomplete.js in order to store emp fullname in window.status .

upon mouse over on this list i need populate employee details like dept, empid, empmanager, empcost center

here is my autocomplese.asmx C# code :

public string[] GetCompletionList(string prefixText, int count)
{
if (count == 0)
{
count = 10;
}

string peopledata = ConnectionStrings.GetConnectionString("Peopledata");
using (SqlConnection ConnStr = new SqlConnection(peopledata))
{
ConnStr.Open();
SqlCommand sqlcmd = new SqlCommand("GetPeopleDetails", ConnStr);
sqlcmd.Parameters.Add("@dotnet.itags.org.prefixText", SqlDbType.VarChar, 50).Value = prefixText + "%";
sqlcmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(sqlcmd);
DataTable dt = new DataTable();
da.Fill(dt);
DataSet ds = new DataSet();
da.Fill(ds);

string[] items = new string[dt.Rows.Count];
int i = 0;
List<String> PeopleData = new List<string>();
foreach (DataRow dr in dt.Rows)
{

items.SetValue(dr["EmpFullName_MngrName"].ToString(), i);

PeopleData.Add(dr["NBKid"].ToString());
PeopleData.Add(dr["PersonNo"].ToString());
PeopleData.Add(dr["CostCenter"].ToString());
PeopleData.Add(dr["Hierarchy"].ToString());

i++;
}
//return PeopleData.ToArray();
return items;
}//end of sqlconnection

} //end of GetCompletionList

here is my java script code:

var obj;
function GetDataViaAJAX()
{
try
{
obj = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
obj = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e1)
{
obj = null;
}
}
if(obj!=null)
{
obj.onreadystatechange = ProcessResponse;
obj.open("POST", "http://localhost/Autocomplete.asmx/GetEmployeeDetails");
obj.setRequestHeader("Host","localhost");
obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
obj.setRequestHeader("Content-Length","12");
obj.send("Name=" + document.getElementById("lblNamevalue").value);
}
return false;
}

function ProcessResponse()
{
if(obj.readyState == 4)
{
if(obj.status == 200)
{
var dsRoot=obj.responseXML.documentElement;
var ddlOrders = document.getElementById("ListBox1");
for (var count = ddlOrders.options.length-1; count >-1; count--)
{
ddlOrders.options[count] = null;
}
var orders = dsRoot.getElementsByTagName('orderid');
var text;
var listItem;
for (var count = 0; count < orders.length; count++)
{
text = (orders[count].textContent || orders[count].innerText || orders[count].text);
listItem = new Option(text, text, false, false);
ddlOrders.options[ddlOrders.length] = listItem;
}
}
else
{
alert("Error retrieving data!" + obj.status);
}
}
}
function SetValue()
{
var selectedvalue=document.getElementById("ListBox1").value;
document.getElementById("Hidden1").value=selectedvalue;
return true;
}

Can anyone help me on this plzzzz......Is it possible to work this functionality with Autocomplete

Hi,

I think you've almost implemented it. And you just need to call this method just after the _highlightItem method in _onListMouseOver.


Hi wen,

I dnt know why IE is throwing me an error in status bar. saying Syntax error.

I have hardcoded person number in autocomplete.js in order to get results, but when it hit GetDataViaAjax(personNo) functoin, it has to pop up alert which i added at the entry point. for my surprise its poping up insted throwing me error in IE status bar as Syntax error..

I am passing person number to FetchEmployeeDetails.aspx in order to fetech details. then i am returning as XML string. once i get XML string i am manipulating in JavaScirpt as follows. plz help me am i missing any thing.

Well beside if i add my function after _onListMouseOver, how do i get ite,.node.value in autocomplete.js ?

Appreciate your help on this

<script language="javascript"
///<summary>
/// This function manually added by krishna, in order to get EMP details.
///</summary
var obj;
function GetDataViaAjax(personNo)
{
alert(personNo);

try
{
obj = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
alert(e);
return;

try
{
obj = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e1)
{

obj = null;
}
}
if(obj!=null)
{
obj.onreadystatechange = ProcessResponse;
obj.open("GET", "http://localhost:3024/0rbit/PeopleSelector_UCR/FetchEmployeeDetails.aspx?personNo=" + myPersonNo, true);
obj.send(null);
}
return false;
}
}

//this is ur call back function
function ProcessResponse()
{

if(obj.readyState == 4)
{
if(obj.status == 200)
{
// this is return part form the ajax call page.
// you qry the database and get the person details in xml format.

var dsRoot=obj.responseXML.documentElement;
alert(obj.responseXML.documentElement);
return;

//get the data from the xml
var oName = dsRoot.getElementsByTagName('lblNameValue');
var oStandardID = dsRoot.getElementsByTagName('lblStandardIDvalue');
var oPersonNo = dsRoot.getElementsByTagName('lblpersonNovalue');
var oHeiarchy = dsRoot.getElementsByTagName('lblHeirarchyValue');
var oCostCenter = dsRoot.getElementsByTagName('lblCostCenterValue');
var oManager = dsRoot.getElementsByTagName('lblManagerValue');


var sName = (oName.textContent || oName..innerText || oName.text);
var sStandardID = (oStandardID.textContent || oStandardID..innerText || oStandardID.text);
var sPersonNo = (oPersonNo.textContent || oPersonNo..innerText || oPersonNo.text);
var sHeiarchy = (oHeiarchy.textContent || oHeiarchy..innerText || oHeiarchy.text);
var sCostCenter = (oCostCenter.textContent || oCostCenter..innerText || oCostCenter.text);
var sManager = (oManager.textContent || oManager..innerText || oManager.text);

var lblName = document.getElementById("GetPeopleList1_lblNameValue");
var lblStandardID = document.getElementById("GetPeopleList1_lblStandardIDvalue").innerHTML;
var lblPersonNo = document.getElementById("GetPeopleList1_lblpersonNovalue").innerHTML;
var lblHeiarchy = document.getElementById("GetPeopleList1_lblHeirarchyValue").innerHTML;
var lblCostCenter = document.getElementById("GetPeopleList1_lblCostCenterValue").innerHTML;
var lblManager = document.getElementById("GetPeopleList1_lblManagerValue").innerHTML;

if(lblName) {lblName.innerHTML = sName; }
if(lblStandardID){lblStandardID.innerHTML = sStandardID;}
if(lblPersonNo){lblPersonNo.innerHTML = sPersonNo;}
if(lblHeiarchy){lblHeiarchy.innerHTML = sHeiarchy;}
if(lblCostCenter){lblCostCenter.innerHTML = sCostCenter;}
if(lblManager){lblManager.innerHTML = sManager;}


}
else
{
alert("Error retrieving data!" );
}
}
}

</script>


If you get an error on the line "alert(personNo)", it's very likely that personNo is null. You may confirm this by double click the error icon in that status bar. If this is the cause, you need to check the code that calls the GetDataViaAjax method to make sure a valid personNo is passed in.

I noticed that in your code, a GET request is send to a .aspx page, so please make sure the response of this request is a XML document. This can be verified by pasting the url "http://localhost:3024/0rbit/PeopleSelector_UCR/FetchEmployeeDetails.aspx?personNo=aPersonNo" in to IE. And you can useXMLDom on client side to process the response.


Hi raymond,

thanks again for your post,

you are right i am redirecting to aspx in order to fetch results,

here is the code in aspx page, in the final am returning XML

DataSet ds = new DataSet();
string peopledata = ConnectionStrings.GetConnectionString("Peopledata");
using (SqlConnection ConnStr = new SqlConnection(peopledata))
{
ConnStr.Open();
SqlCommand sqlcmd = new SqlCommand("GetEmployeeDetails", ConnStr);
sqlcmd.Parameters.Add("@.PersonNO", SqlDbType.VarChar, 50).Value = Request.QueryString["personNo"];
//sqlcmd.Parameters.Add("@.PersonNO", SqlDbType.VarChar, 50).Value = "10525119";
sqlcmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(sqlcmd);
da.Fill(ds, "Employees");

Response.Clear();
Response.ContentType = "text/xml";
Response.Write(ds.GetXml());
Response.End();
ConnStr.Close();

As of now am sending personNo (a hardcoded value) from Autocomplete.js as GetDataViaAjax("10525119")

Once page returns from FetchemployeeDetails.aspx , i could not see anything.

Well you are taking about XMLDOM, when i am returning XML from ASPX page do i need to parse it again at client side ?


krishnanellutla:

Well you are taking about XMLDOM, when i am returning XML from ASPX page do i need to parse it again at client side ?

Yes but not necessary. XMLDom gives you a convenient way to process it. You could also process it via your own method just like processing some text.


HI raymond,

I could able to display details for the hardcoded value in Autocomplete.js.

I am passing a hardcoded value from Autocomplete.js as GetDataViaAjax("123456789" ); based on this value i am querying database to fetech details and returning XML dcoument on the client side, with ProcessResponse function iam storing details for respective label controls (i took Labels and a panel, for displaying details) .

Now as my code in Autocomplete.asmx returns Employee Fullname, i cannot fetech details based on this fullname. In order to fetch details i have to pass person number to GetDataviaAjax function some thing like GetDataViaAjax(item.firstChild.nodeKeyValue ).

According to thisArticle , if we able to send a key value along with empfullname. my task will be get too easy for dispalying details. I am not sure how it is going to work, but i am gonna work on it.. lets see how it goes

appreciate your prompt responses on this..Thanks bdy !!!


HI Raymond,

Well one more, As of now i am fetching from FetchEmployeeDetails.aspx page, instead of this i would like to use web service (Autocomplete.asmx ) where i would like to add my method in web service. this autocomplete functionality is in User control page.

once again, am pasting whole code for your reference:

JavaScript in GetPeopleDetails.ascx page:

<script language="javascript"
///<summary>
/// This function manually added by krishna, in order to get EMP details.
///</summary
var obj;
function GetDataViaAjax(personNo)
{
var oURLAddress;
var sURLAddress

oURLAddress = document.getElementById("GetPeopleList1_UrlAddress");
if (oURLAddress)
{
sURLAddress = oURLAddress.value;
alert(sURLAddress);
}

try
{

if (window.XMLHttpRequest)
{
// If IE7, Mozilla, Safari, and so on: Use native object.
obj = new XMLHttpRequest();
if(obj!=null)
{
obj.onreadystatechange = ProcessResponse;
obj.open('GET', sURLAddress + 'FetchEmployeeDetails.aspx?personNo=' + personNo, true);
alert("I am Inside XMLHttpRequest");
obj.send(null);
}
}
else if (window.ActiveXObject)
{
// ...otherwise, use the ActiveX control for IE5.x and IE6.
obj = new ActiveXObject('MSXML2.XMLHTTP.3.0');
if(obj!=null)
{
obj.onreadystatechange = ProcessResponse;
obj.open('GET', sURLAddress + 'FetchEmployeeDetails.aspx?personNo=' + personNo, true);
alert("I am Inside ActiveXObject");
obj.send();
}
}

}
catch(e)
{
try
{
obj = new ActiveXObject('Microsoft.XMLHTTP');
}
catch(e1)
{

obj = null;
}
}
return false;
}

function ProcessResponse()
{

if(obj.readyState == 4)
{
if(obj.status == 200)
{
// this is return part form the ajax call page.
// you qry the database and get the person details in xml format.
try
{
var dsRoot=obj.responseXML.documentElement;
alert("XML Processed !!!") ;

//get the data from the xml
var oName = dsRoot.getElementsByTagName('EmpFullName')[0].childNodes[0].nodeValue;
var oStandardID = dsRoot.getElementsByTagName('NBKid')[0].childNodes[0].nodeValue;
var oPersonNo = dsRoot.getElementsByTagName('PersonNo')[0].childNodes[0].nodeValue;
var oHeiarchy = dsRoot.getElementsByTagName('Hierarchy')[0].childNodes[0].nodeValue;
var oCostCenter = dsRoot.getElementsByTagName('CostCenter')[0].childNodes[0].nodeValue;
var oManager = dsRoot.getElementsByTagName('MngrFullName')[0].childNodes[0].nodeValue;


var sName = (oName.textContent || oName.innerText || oName.text || oName);
var sStandardID = (oStandardID.textContent || oStandardID.innerText || oStandardID.text || oStandardID);
var sPersonNo = (oPersonNo.textContent || oPersonNo.innerText || oPersonNo.text || oPersonNo);
var sHeiarchy = (oHeiarchy.textContent || oHeiarchy.innerText || oHeiarchy.text || oHeiarchy);
var sCostCenter = (oCostCenter.textContent || oCostCenter.innerText || oCostCenter.text || oCostCenter);
var sManager = (oManager.textContent || oManager.innerText || oManager.text || oManager);

var lblName = document.getElementById("GetPeopleList1_lblNameValue");
var lblStandardID = document.getElementById("GetPeopleList1_lblStandardIDvalue");
var lblPersonNo = document.getElementById("GetPeopleList1_lblpersonNovalue");
var lblHeiarchy = document.getElementById("GetPeopleList1_lblHeirarchyValue");
var lblCostCenter = document.getElementById("GetPeopleList1_lblCostCenterValue");
var lblManager = document.getElementById("GetPeopleList1_lblManagerValue");

if(lblName) {lblName.innerHTML = sName; }
if(lblStandardID){lblStandardID.innerHTML = sStandardID;}
if(lblPersonNo){lblPersonNo.innerHTML = sPersonNo;}
if(lblHeiarchy){lblHeiarchy.innerHTML = sHeiarchy;}
if(lblCostCenter){lblCostCenter.innerHTML = sCostCenter;}
if(lblManager){lblManager.innerHTML = sManager;}

}

catch(e2)
{
alert(e2);
}

}
else
{
alert(obj.responseXML.documentElement);
alert("Status = " + obj.status);
alert("Error retrieving data!" );
}
}
}

</script>

-------------------------------

Autocomplete.asmx code which get results for FullNames :


string peopledata = ConnectionStrings.GetConnectionString("Peopledata");
using (SqlConnection ConnStr = new SqlConnection(peopledata))
{
ConnStr.Open();
SqlCommand sqlcmd = new SqlCommand("GetPeopleDetails", ConnStr);
sqlcmd.Parameters.Add("@.prefixText", SqlDbType.VarChar, 50).Value = prefixText + "%";
sqlcmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(sqlcmd);
DataTable dt = new DataTable();
da.Fill(dt);
DataSet ds = new DataSet();
da.Fill(ds);
string[] items = new string[dt.Rows.Count];
int i = 0;

foreach (DataRow dr in dt.Rows)
{
items.SetValue(dr["EmpFullName_MngrName"].ToString(), i);
i++;
}

//return PeopleData.ToArray();
return items;

-------------------------------

Code in FetchemployeeDetails.aspx

string personNo = Request.QueryString["personNo"];

DataSet ds = new DataSet();
string peopledata = ConnectionStrings.GetConnectionString("Peopledata");
using (SqlConnection ConnStr = new SqlConnection(peopledata))
{
ConnStr.Open();
SqlCommand sqlcmd = new SqlCommand("GetEmployeeDetails", ConnStr);
sqlcmd.Parameters.Add("@.PersonNO", SqlDbType.VarChar, 50).Value = personNo;
//sqlcmd.Parameters.Add("@.PersonNO", SqlDbType.VarChar, 50).Value = "10525119";
sqlcmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(sqlcmd);
da.Fill(ds, "Employees");

Response.Clear();
Response.ContentType = "text/xml";
Response.Write(ds.GetXml());
Response.End();
ConnStr.Close();

}

-------------------------------

Well in the java script i am calling this FetchemployeeDetails in order to get Employee Details using XMLhttprequest.

intead of going to this aspx page, i would like to put this method in webservice method, and call this method and process accordingly..

So far i never done calling a web service method from java script , can you please help me in modfying this part.

appreciate your help on this..

Thanks in advance


Hi experts,

I am trying to do this whole functionality to a web control library, i added a new instance for AutocompleteExtender in my class. but i could able to find TargetControlID property for this. Can any one help me on this

Ajax auto complete extender

I am using ajax autocompleteextender. I have declared the service method in the user control itself instead of declaring it in aspx page. But the extender does not work .How can i do it? I want to declare it in ascx page,as i will be reusing the component.

my master page script
=====================
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" EnablePartialRendering="true"/asp:ScriptManager
my aspx page where i am inheriting masterpage
==============================================

<%@. Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="frmTestAuto.aspx.cs" Inherits="frmTestAuto" Title="Untitled Page" %>
<%@. Register src="http://pics.10026.com/?src=ctlAutoExtender.ascx" TagName="ctlAutoExtender" TagPrefix="uc1" %>
<%@. Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server" /asp:ScriptManagerProxy>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td>TEST AUTO PAGE</td>
</tr>
<tr>
<td>uc1:ctlAutoExtender ID="CtlAutoExtender1" runat="server" /</td>
</tr>
<tr>
<td>Footer</td>
</tr>
</table>
</asp:Content
my ascx page
=============
<%@. Control Language="C#" AutoEventWireup="true" CodeFile="ctlAutoExtender.ascx.cs" Inherits="ctlAutoExtender" %>
<%@. Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server"></asp:ScriptManagerProxy>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td>
<asp:TextBox runat="server" ID="myTextBox" Width="300" />

<ajaxToolkit:AutoCompleteExtender runat="server" ID="autoComplete1" TargetControlID="myTextBox" Enabled="true"
ServiceMethod="GetCompletionList" ServicePath="ctlAutoExtender.ascx.cs" MinimumPrefixLength="3"
CompletionInterval="1000" EnableCaching="true"
CompletionSetCount="12"/>
</td>
</tr>
</table
my ascx.cs page
===============

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Web.Services;
using System.Web.Script.Services;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]

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

}

[WebMethod]
[ScriptMethod]
public static string[] GetCompletionList(string prefixText, int count)
{
string sql = String.Format("select clt_tVLongNm from mclient where clt_tVLongNm like @.companyname + '%'");

List<string> companyList = new List<string>();

using (SqlConnection connection = new SqlConnection("server=192.168.2.57;uid=sa;pwd=d28rg6yp;database=fnocash_report"))

using (SqlCommand command = new SqlCommand(sql, connection))
{
connection.Open();
command.Parameters.AddWithValue("@.companyname", prefixText);
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
companyList.Add(reader.GetString(0));
}
}
}
return companyList.ToArray();
}
}

please help me out asap


Hi,

In ASP.NET, a request for a .ascx file will be?handled?by?System.Web.HttpForbiddenHandler?HttpHandler,?that's?to?say,?it's?refused.
So you can't use a method in the UserControl, I suggest trying to use a web service(.asmx) to achieve this.
Hope this helps.

Hi,

I am declaring the autocompleteextender in the user control. So, should I give service path for the extender as .asmx file in the extender?

eg:

My ascx page:

<%

@.ControlLanguage="C#"AutoEventWireup="true"CodeFile="ctlAutoExtender.ascx.cs"Inherits="ctlAutoExtender" %>

<%

@.RegisterAssembly="AjaxControlToolkit"Namespace="AjaxControlToolkit"TagPrefix="ajaxToolkit" %>

<

tablecellpadding="0"cellspacing="0"border="0"width="100%"><tr><td><asp:TextBoxrunat="server"ID="myTextBox"Width="300"/>

<ajaxToolkit:AutoCompleteExtenderrunat="server"ID="autoComplete1"TargetControlID="myTextBox"Enabled="true"ServiceMethod="GetCompletionList"ServicePath="App_Code/WebService.cs"MinimumPrefixLength="3"CompletionInterval="1000"EnableCaching="true"CompletionSetCount="12"/></td></tr>

</

table>


Yes,?like?this:??ServicePath="the relative path of the .asmx file"
Thanks, that solved my problem.

AJAX Assembly

I am running visual studio on my desktop and laptop. Both have had the AJAX Control toolkit and AJAX extensions installed. I mostly do my development work on my desktop but every once in a while I take my laptop. When I take my laptop I copy and paste the visual studio 2005 folder from 'documents' and copy it onto my laptop.

I've just done this recently and I am getting errors "Unrecognized tax prefix or device filter 'ajaxToolkit' on all my ajax controls. When I create a new page and insert an ajax control Visual Studio registers an assembly 'Assembly="AjaxControlToolkit" and tags it as "cc1". On my desktop visual studio doesn't register any assembly. It just calls the control <ajaxToolkit:...> and things work.

I've checked the bin folder and it does contain the AJAX dll. I'm sure it's something simple here, can someone tell me what is missing? Thank you.

try this in your aspx

<%@.RegisterAssembly="AjaxControlToolkit"Namespace="AjaxControlToolkit"TagPrefix="cc1" %>


I know about registering the assembly this way. I was wondering why on my desktop machine I don't have to register the assembly in my aspx and when I open it on my laptop I, all of a sudden, do.


Hi,

This can be also registered in web.config.

For instance:

<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 namespace="AjaxControlToolkit" assembly="AjaxControlToolkit" tagPrefix="ajaxToolkit"/>
</controls>

Ajax Approach

Hi all,

Well my query is regarding the optimal use of ajax,I have to build a user control that is functioning of tree view .example

There are three pane

1.In fist pane there is a tree view

2 In 2nd pane ,contain the list that is populated on click of a node(on text click)

3 In third pane when i double click the item of second pane it should moved into 3rd pane.

4.when i clicked on the node of the tree its child should filled from the database (this is imp one as no whole page should be post back only that node part should generated here i take a help of ajax)

Any any kind of help will contribute to me.

thanks

My suggested approach will be this:

1. Send requests for data to server side via SriptMethod on page or WebMethod on ScriptService .

2. Get the data as objects to client side (It will be if you're working with JSON)

3. Handle all UI changes in client side (Fore example: expand node on callback function - after you've received data from server)


Thanks its good and will work fine i hope iam still searching for good .

what approach is better ie use a .net treeview control in update panel or make a ajax call on clicking on each node i know the 2nd one is good but i need some more facts like if i used ist one and when a node clicked event is generated then whole tree view is posted but in second one there is on demand loading

please send some more views

thanks

Ajax and WebParts

I am building a site that uses Web Parts and Ajax. In each Web Part I have a user control that uses Ajax to update itself. All the user controls use Ajax. Everything works well until, I close one of the web parts.When I do this and click on any of the controls to do an update, I get an error Sys.InvalidOperationException: Could not find UpdatePanel with ID <name of the panel that contained the web part that I closed>. If it is being updated dynamically then it must be inside another update panel.

Since all the controls use Ajax, how can i overcome the fact that the script is looking for the controls found in another Web Part.

1.Try to take a look at this useful blog about Dragging and dropping ASP.NET 2.0 Web Parts in Firefox and Safari with ASP.NET AJAX -http://blogs.neudesic.com/blogs/david_barkol/archive/2006/11/07/631.aspx
2.Try to read this thread - http://forums.asp.net/thread/1486784.aspx to get some ideas.
Here are some sample codes about using webParts in Ajax for your reference.
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="upPortal" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:WebPartManager ID="wpmPortal" runat="server">
</asp:WebPartManager>
<div class="wrapper">
<asp:CatalogZone ID="czPortal" runat="server">
</asp:CatalogZone>
</div>
<div class="wrapper">
<div id="wz1">
<asp:WebPartZone ID="WebPartZone2" runat="server" HeaderText="Column 1">
<ZoneTemplate>
<asp:Wizard ID="Wizard1" runat="server">
<WizardSteps>
<asp:WizardStep ID="WizardStep1" runat="server" Title="Step 1">
</asp:WizardStep>
<asp:WizardStep ID="WizardStep2" runat="server" Title="Step 2">
</asp:WizardStep>
</WizardSteps>
</asp:Wizard>
<%--<uc1:ThemeSelector ID="ThemeSelector1" runat="server" EnableTheming="True" />--%>
</ZoneTemplate>
</asp:WebPartZone>
</div>
<div id="wz2">
<asp:WebPartZone ID="WebPartZone3" runat="server" HeaderText="Column 2">
<ZoneTemplate>
<asp:Calendar ID="Calendar1" runat="server" BackColor="White" BorderColor="Black"
DayNameFormat="Shortest" Font-Names="Times New Roman" Font-Size="10pt" ForeColor="Black"
Height="220px" NextPrevFormat="FullMonth" TitleFormat="Month" Width="312px">
<SelectedDayStyle BackColor="#CC3333" ForeColor="White" />
<TodayDayStyle BackColor="#CCCC99" />
<SelectorStyle BackColor="#CCCCCC" Font-Bold="True" Font-Names="Verdana" Font-Size="8pt"
ForeColor="#333333" Width="1%" />
<DayStyle Width="14%" />
<OtherMonthDayStyle ForeColor="#999999" />
<NextPrevStyle Font-Size="8pt" ForeColor="White" />
<DayHeaderStyle BackColor="#CCCCCC" Font-Bold="True" Font-Size="7pt" ForeColor="#333333"
Height="10pt" />
<TitleStyle BackColor="Black" Font-Bold="True" Font-Size="13pt" ForeColor="White"
Height="14pt" Font-Names="Arial" />
</asp:Calendar>
</ZoneTemplate>
</asp:WebPartZone>
</div>
<div id="wz3">
<asp:WebPartZone ID="WebPartZone4" runat="server">
<ZoneTemplate>
<asp:Login ID="Login1" runat="server">
</asp:Login>
<asp:Login ID="Login2" runat="server">
</asp:Login>
</ZoneTemplate>
</asp:WebPartZone>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div
Can you send your website to my email:v-jicwan@.microsoft.com? I'd?like?to?test?it.

Hi Jasson,

Thanks for the information. I found the problem. Each of my user controls are inside an UpdatePanel tag. I had missed adding the attribute UpdateMode="Conditional". Once I added this attribute everything worked fine.

Thanks once again


Hi vinod,

I have the same problem. i have try your solution ...its working but it will referesh the page..

i want to work it without refereshing the page. is it possible.

waiting for your reply.

thanks in advance

vishnu


Hi vinod,

I have the same problem. i have try your solution ...its working but it will referesh the page..

i want to work it without refereshing the page. is it possible?.

please try to send sample code.

waiting for your reply.

thanks in advance

vishnu

Saturday, March 24, 2012

AJAX and web server controls

Please some one explain me the following in ajax.

1) Is it necessary that I have to use html controls instead of web server control in order to support AJAX in my web page?. (I know we can use Magic AJAX – penal control to do the same. But I don't want to use any third party component or library).

2) As per my understanding in AJAX like technology I can send some information to the server and I can get some info from the server based on the info sent. But if I want to add a new row to my web server datagrid control. How can we do this with AJAX. I mean if I add a blank row to my collection class then how will I reflect that in UI.

3) Is there any simple code sample available in the net that demonstrates the web server control manipulation with AJAX.

Hi,

you can use normal web controls when you use Atlas, which is the AJAX implementation/framework from Microsoft.

For more information and quickstartsplease take a look here.

Grz, Kris.

Ajax And Web Reference

hi

is it possible to refer by web service to my ajax control library component AutoCompleteExtender1, if i add asmx page directly to project solution i'm able to give the service path and service method to this component.

i have a separate web service running which is communicating with my SQL Server 2000

so in my solution i added the webservice using add App_WebReferences, sohow to assign my service path and service method to the extender.

thanks in advance.

happy dotnetting.

bye

jags

Hi jags,

It isn't possible to connect to an external webservice. So one solution is. Create a webservice (WebserviceA) within your solution where your website resides. In the code for WebserviceA you make a connection (webreference like you are used to) to WebserviceB (which is outside your domain). Al the requests that are going to webserviceA are passed through to webserviceB which will return the value to webserviceA and webserviceA will return it to your browser. Hope this helps!

Regards,


thanks dennis, i'll be travelling for the next few days.i'll try this and will get back to you at the earliest.

Ajax and Web custom Control

Hi all ,

Can any budy tell the approach for building a treeview web custom control using ajax

I cant getting the idea of rendring the tree view(HTML for Tree view ie using ajax)

Any help

Hi

Have you tried nested Datalists?

Thanks


No Jin

Nerver Header give some hint...

Another thing ,i start to build the tree using ul and li of html tag and rendering in the following manner

protected void BuildDivContainingTree(HtmlTextWriter output)
{

// Start building the HTML
output.Write("<div><ul><li>");
output.Write("<table><tr><td><IMG src='../../images/minus.gif'></td><td style='cursor:hand' onclick='onTextClicked(0,0);'>");
output.Write("<font color=red>");
output.Write(this.BaseNodeText + "</font></td></tr></table>");
output.Write("<div id='treeview_0'></div><div id='DivInPage'></div>");
output.Write("</li></ui>");

output.Write("<script>document.onreadystatechange=StartLoading('" + this.Type + "')</script>");

}

now i want to send a ajax cal for filling the node of the tree...

what should i do ?

as i created in the custom control i send a request to a aspx page and execute server function and place the out as response text as xml dox and render it in <li> inner text .

any suggestions

Ajax and UserControl from scratch

Hi all,

Iam building a web custom control from scratch ir no server control is used ..so how i implement ajax in this.

Example:i created a tree view using <ul><li> and when i clicked the node i call a javascript function for filling the data now where i write this function so that every call to this function is asynchronous

please help me out

Hi Spanco,

Partial Update Treeview is a complex and big project, so sorry we cannot provide a working sample as what you want to get.However, in my opnion, I think you may use Ajax + Div + WebService. Fortunately, I have found some urls related what you are concerning. Here they are:

1.http://www.codeproject.com/useritems/TreeViewAjax.asp

2.http://www.codeproject.com/Ajax/IntroAjaxASPNET.asp

3. http://ajaxaspects.blogspot.com/2006/01/tree-view-ajax-control.html The sample url:http://www.mathertel.de/AjaxEngine/S03_AJAXControls/TreeView.aspx . You can get the source code here and I hope that you can benefit from it. This sample is using Ajax + XML +WebService.

This response contains a reference to a third party World Wide Web site. Microsoft is providing this information as a convenience to you. Microsoft does not control these sites and has not tested any software or information found on these sites; therefore, Microsoft cannot make any representations regarding the quality, safety, or suitability of any software or information found there. There are inherent dangers in the use of any software found on the Internet, and Microsoft cautions you to make sure that you completely understand the risk before retrieving any software from the Internet.

I hope this help.

Best regards,

Jonathan

AJAX and User controls which emit and execute Javascript

I have a user control which emits a bit of Javascript in its Render(HtmlTextWriter) method. When I use this control on a simple ASP.NET page with full page postbacks, it emits the Javascript which is then run by the browser.

However, when I naively drop this control into an UpdatePanel, when the panel gets updated the control renders the Javascript into the right place on the page, but the script is not run, so the control does not appear correct. Is it possible to achieve this somehow? (It ought to be, as we have an alternative AJAX package which does it without modification)

In order to achieve this you should not generate the script text in the Render method. Instead you should use ScriptManager.RegisterClientScriptBlock function. This will work for both postbacks as well as partial postbacks.

I've moved the script into a RegisterClientScriptBlock function, but it still appears not to be executed... here's my control's test OnPreRender() which does the registering, and I can see in the debugger it's called on both full and partial postbacks, but the Javascript alert() only fires off on full postbacks. Any ideas?

protectedoverridevoid OnPreRender(EventArgs e)

{

base.OnPreRender (e);if(Visible)

{

StringBuilder sb =newStringBuilder();StringWriter writer2 =newStringWriter(sb);

writer2.Write(

"<script type=\"text/javascript\">");

writer2.Write(

"//<![CDATA[");

writer2.Write(

"alert('hello world!');");writer2.Write("//]]>");

writer2.Write(

"</script>");

Page.ClientScript.RegisterClientScriptBlock(

this.GetType(),"__Map", sb.ToString());

}

}


Use ScriptManager.RegisterClientScript block not Page.ClientScript.registerClientScriptBlock
Sorry, my mistake. It works fine now... many thanks!

J.

Ajax and user controls

hi all,

i have a master page whith some aspx pages that inherit from him , each page has some user controls each control has Ajax functionality

the question is where to put the script manager

    one on the master page.one on each aspx page.one on each user control,

thanks Daniel

I have found it seems to work best on the masterpage when you have controls using ajax on many content pages.

AjaxButter


YOu can't put more than one on the page, so if you have them both in the master and in a page, you should expect to see an error. Instead, put it on the Master, and then have proxies on the pages and controls

AJAX and the Upload Control - My Solution

Hello everyone,

I thought I should post this solution since I had a hard time finding any solution on this forum.

If you have an<asp:FileUpload control in an AJAX you need to add a section like:

<Triggers>
<asp:PostBackTriggerControlID="myUploadSubmitButton"/>
</Triggers>

This will add a postback for the button. If the upload control is hidden and visable by a button in the UpdatePanel you will need to add a postback trigger for that too.

This works for me without any issues.

- Chris

P.S. Visit wiki.cdyne.com for some more cool programming things!

Thanks for this solution. But full page update will occur in this case.

The Postback Trigger allows for the file upload to work correctly but then it breaks all the rest of my other AJAX update panels (calendars popups, etc.) that are on the page.

Using ASP.NET AJAX Beta 2.


Hey cchenoweth,

I am having trouble with FileUpload inside UpdatePanel, there is no data when a button click happens. Where is this PostBackTrigger control? Is this in Atlas toolkit? can you post where to put this and where to get this control. Thanks.

den2005


Hey Chris,

I have worked it out it's working.. Tahnsk for this tip very helpful.

Thanks again.

Dennis


Hey Chris,

I have worked it out it's working.. Thanks for this tip very helpful.

Thanks again.

Dennis


den2005:

Hey cchenoweth,

I am having trouble with FileUpload inside UpdatePanel, there is no data when a button click happens. Where is this PostBackTrigger control? Is this in Atlas toolkit? can you post where to put this and where to get this control. Thanks.

den2005

come on then den2005 dish the info ..... where is it then;)??

I'm having the same problems but i just canna find this so called PostBackTrigger - within the <trigger> section all i get is <atlas:ControlEventTrigger> and <atlas:ControlValueTrigger>

now i think i've got the latest version etc... is there a namespace i should be using to access this r??

(yes i'm very new to all this..8-)]

ta in advance


Sprayball,

Just as Chris mentioned, you need to put this on after the

<asp:UpdatePanel

but before the

<

ContentTemplate>and add in your load event or before you used the buttonclick, say id of your script manager is sm,

sm.RegisterPostBackControl(myUploadSubmitButton)

<Triggers>
<asp:PostBackTriggerControlID="myUploadSubmitButton"/>
</Triggers>


Hi !

I tried your solutions but i think my case is a little bit more complicated : my FileUpload Control is in an edittemplate of a gridview, in an updatepanel.

So my first question is : how can you define the ID of the Upload Submit Button ? I have only access to the ID of the FileUpload ...

and my second question is : when do i have to register the upload submit button as a PostbackControl ? during the rowdatabinding of the gridview ? during gridview updating ?

Thank you very much in advance for your help because for now it works, but without update panel (i get nothing in the postedfile property of the fileupload with the updatepanel) !

Axel


Is there a way to do the same thing but with JavaScript (on client side)?

koistya,

It is possible using hidden field and setting this control value after getting the value of the FileUpload control...Then you can get the value of this hidden field control at server side...

This works...Try it...Smile


HI,

Is there a way to make FileUpload control work with partial page update?

<asp:PostBackTrigger> makes a full page refresh and resets all my ajax dragpanels to their original position.

I tried AsyncPostBackTrigger, with the submit button outside the update panel, and it doesn't function well (doesn't upload the file).



Thanks in advance!

Ajax and TargetCOntrolID issue

In Atals, toolkit control can be out side of Updatepanel that includes the target Control. But For AJAX, it reports

An extender can't be in a different UpdatePanel than the control it extends.

or

The TargetControlID of 'PopupControlExtender1' is not valid. A control with ID 'DateTextBox' could not be found

How to solve this issue? It's painful if I need to change all toolkit controls in page for AJAX.

Beta 1 changed how everything worked compared to Atlas. You will need to place the extenders and target control within the same Update Panels (With exception of the ModalPopup - if you use this weeks Release Build on CodePlex)... Yes it will probably be a little more work but whats in the Betas now will be the RTM version so - its either now or then...

Ajax and OutputCache

I have a control that I cache using the directive:

<%@dotnet.itags.org.OutputCache Duration="60" VaryByParam="none" %>

This control also has an ajax control that uses the callback control from CA. It does not work when this directive is on the page (error: data could not be loaded), when I remove it, it works. Is there a fix for this? Can I make it so it caches non-AJAX callback requests only?

Thanks,
- Al

Is it VaryByControl you are looking for? Or am I misunderstanding something here?