ラベル asp の投稿を表示しています。 すべての投稿を表示
ラベル asp の投稿を表示しています。 すべての投稿を表示

2012年3月28日水曜日

Resizable control as part of composite control

I'd like to use the ASP.NET AJAX Resizable control in my composite control. My control should provide all its images, JavaScript, and CSS as Embedded Resources, so that the users of it don't need to bother about these files. This includes the HandleGrip.png image that comes with the Resizable control. Unfortunately, the image use is defined in the css of the Resizable control, like this:

.handleText
{
width:16px;
height:16px;
background-image:url(images/HandleGrip.png);
overflow:hidden;
cursor:se-resize;
}

How can I let anyone use my control without giving them a copy of HandleGrip.png (to put somewhere on their website, while it is already embedded in my DLL)?

Hi,

You may refer to the the sample in AjaxControlToolkit. For instance:

.ajax__slider_h_rail {position:relative;background:url(<%=WebResource("AjaxControlToolkit.Slider.Images.slider_h_rail.gif")%>) repeat-x;height:22px;}


Indeed.

I triedbackground-image. Visual Studio did not let me (saying'url(<%=WebResource(' is not a valid value for the 'background-image' property.). After I read your comment I realized I could set the background-image by means of specifyingbackground.

Thanks.

Resizeable panels required (that already expand and are dragable)

Hello everyone,

I am fairly new to ASP.NET and the AJAX toolkit but I had a question that I am sure there must be an answer for in these forums but I have yet to find it.

I have created several draggable panels that also collapse/expand and I am trying to also make them resizeable. I have looked at numerous postings that refer to the resizeable option but I must be doing something wrong.

The other challenge I have is to make a specific panel come to to the top once activated it. At the moment only 1 of the panels is "on top" and the others are dragable but still "underneath". I am not sure how to fix that.

Any ideas or links to previous posts that would outline how to do this would be appreciated.

Many thanks

Joey


Hi,Joey

I am afraid we cannot find out the exact root cause without further information captured when the problem occurs.

To troubleshoot this issue, we really need the source code to reproduce the problem, so that we can investigate the issue in house. It is not necessary that you send out the complete source of your project. We just need a simplest sample to reproduce the problem. You can remove any confidential information or business logic from it.

Thank you.


HelloJin-Yu Yin,

I have 2 dragable panels at the moment and am still trying to figure out how to resize them

Here is the source code that I am working with at the moment:

<%@. Page Language="VB" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %
<%@. Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Dragable/Expandable panels</title>
<link href="http://links.10026.com/?link=StyleSheet.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />

<!-- start collapsable panel code -->
<cc1:CollapsiblePanelExtender ID="CollapsiblePanelExtender1" runat="server"
TargetControlID="PanelBody"
ExpandControlID="PanelHeader"
CollapseControlID="PanelHeader"
Collapsed="False"
TextLabelID="Label1"
ExpandedText="(Hide Details...)"
CollapsedText="(Show Details...)"
ImageControlID="Image1"
ExpandedImage="images/arrow_up1.gif"
CollapsedImage="images/arrow_dn1.gif"
SuppressPostBack="true">
</cc1:CollapsiblePanelExtender>
<!-- end collapsable panel code -->

<cc1:DragPanelExtender ID="DragPanelExtender1" runat="server" TargetControlID="PanelContainer" DragHandleID="PanelHeader">
</cc1:DragPanelExtender>

<div>
<asp:Panel ID="PanelContainer" runat="server" cssClass="dragContainer" style="z-index: 101; left: 140px; position: absolute; top: 210px">
<asp:Panel ID="PanelHeader" runat="server" cssClass="dragHeader">

<!-- start elements inside header -->
<table width="250" border="0">
<tr>
<td><table width="95%" border="0" align="center">
<tr>
<td><p><font color="#FFFFFF"><strong>Pick an Option</strong></font></p></td>
<td><img src="http://pics.10026.com/?src=images/arrow_up1.gif" width="15" height="15" align="right"></td>
</tr>
</table></td>
</tr>
</table>
<!-- end elements insideheader -->
</asp:Panel>

<asp:Panel ID="PanelBody" runat="server" cssClass="dragBody"
<!-- start elements inside body-->
<table width="250" border="0" bgcolor="#e3f1fe"
<tr>
<td bgcolor="#99BDEA"><div align="center"><img src="http://pics.10026.com/?src=images/icons1.gif" width="206" height="19"></div></td>
</tr>
<tr>
<td><table width="90%" border="0" align="center">
<tr>
<td colspan="2"> <form name="form1">
<select name="select" onChange="MM_jumpMenu('parent',this,0)">
<option selected>Choose Option</option>
<option>Price 1</option>
<option>Price 2</option>
<option>Price 3</option>
<option>Price 4</option>
</select>
</form></td>
</tr>
</table></td>
</tr>
</table>
<!-- end elements inside Listing Status body -->
</asp:Panel>
</asp:Panel
</form>

<!-- start Javascript needed to drag panel, only required once -->
<script type="text/javascript">
function setBodyHeightToContentHeight() {
document.body.style.height = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight)+"px";
}
setBodyHeightToContentHeight();
window.attachEvent('onresize', setBodyHeightToContentHeight);
</script>
<!-- start Javascript needed to drag panel -->

</body>
</html>

Any help would be appreciated.

Thanks

Joey

Resizing the Ajax ResizableControlExtender durning the OnLoad event

I'm having a problem with the Ajax ResizableControlExtender.

The control is around an asp panel, which is around a gridview. The gridview is really wide, and I need the headers to stay at the top when scrolling down. That's working just fine.

I have a body onresize javascript event that resizes the ResizableControlExtender to fit better on the screen whenever the screen is resized.

What I need to do is have the resize event fire on the "OnLoad" event.

But at that time the ResizableControlExtender has not been initialized (or so I suppose) and is undefined at that time.

Is there a way to resize the ResizableControlExtender to the current window size in the page load event?

Thanks.

Chuck Snyder

Hi Chuck,

Based on my understanding, the pageLoad method is fired after all extenders on the page have been initialized. But if it doesn't work with you, please try to use window.setTimeout method to invoke the resize method in pageLoad, so that it will be called asynchronized at later.

For instance:

function pageLoad() { window.setTimeout(resize, 1000); }

2012年3月26日月曜日

Response.Redirect in Asp.net AJAX

Hi All,

I Developed a project in as.net with Asp.net Ajax... i used Response.Redirect several time in my web project with and without script manager... and its worked fine...
but some tells me...this is not recommended to use Response.Redirect in asp.net AJAX....and when i will deploy on Production server... there may be chance of some error.............

So please give your opinon....
Thanks
SajjadPerhaps you are confusing this with Server.Transfer. There should be no issues with Response.Redirect.
R u 100% sure...
and what issue with Server.Transfer....

REsponse.Redirec will not cause any issues if you invoke it from CodeBehind pages.

I have worked with one developer who instantiated the Page object, and tried to use the page object.REsponse.REdirect() and that failed - as it should.


returing a datatable

I'm having a problem trying to get a datatable from a CodeBehind using Pagemethods with ASP.NET Ajax Rc that was just released. The specific error is below. This code worked with the July CTP. If you have any suggestions, let me know.

System.InvalidOperationException A Circular reference was detedted while serializing an object of type System.Reflection.Module

Returning a datatable - solution

1) add reference ASP.NET 2.0 AJAX Futures December CTP DLL to solution,

2) add the following section to web. config

<

scripting>

<

webServices>

<

jsonSerialization>

<

converters>

<

addname="DataSetConverter"type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview"/>

<

addname="DataRowConverter"type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview"/>

<

addname="DataTableConverter"type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview"/>

</

converters>

</

jsonSerialization>

</

webServices>

</scripting>

3) Add ASP.NET 2.0 AJAX Futures December CTP 'PreviewScript.js' to ur solution

4) Add the Script reference ur aspx page

<asp:ScriptManagerID="ScriptManager1"runat="server"><Scripts><asp:ScriptReferencePath="PreviewScript.js"/></Scripts></asp:ScriptManager>

5) we need to change the PageMethod(in code behind page that returns DataTable) toStatic

6)in order to get the result this way( result.getItem(i).getProperty("Column name");) we need to parse

Sys.Preview.Data.DataTable.parseFromJson(result);


This doesn't work anymore in v1.0. Anyone know how to fix it?

jsonSerialization>

<

converters>

<

addname="DataSetConverter"type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview"/>

<

addname="DataRowConverter"type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview"/>

<

addname="DataTableConverter"type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview"/>

</

converters>

</

jsonSerialization>


This does work, I just forgot to download the January Futures CTP.

2012年3月24日土曜日

Returning a datatable

Based on trying to return a DataSet, I have decided to try and justreturn a DataTable (fyi. http://forums.asp.net/1077805/ShowPost.aspx).
The problem is that in my javascript callback, I need to get at thedata that is returned. What methods are available on the returneddata? I have a datatable with several datarows, but I don't knowwhat methods are available to actually get at the data. BTW, I amtrying to do this programmatically and am not interested in adeclarative solution to this. When I attempt to alert out to theUI, result.length is coming through a undefined.
Web Service:
[WebMethod]
public System.Data.DataTable ReturnDataSet()
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("tblStateId",System.Type.GetType("System.Int32")));
dt.Columns.Add(new DataColumn("State",System.Type.GetType("System.String")));
dr = dt.NewRow();
dr["tblStateId"] = 1;
dr["State"] = "Tennessee";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["tblStateId"] = 2;
dr["State"] = "Alabama";
dt.Rows.Add(dr);
return (dt);
}
Client Side Javascript:
function LoadTest(){
Samples.AspNet.WebServiceTest.ReturnDataSet(ReturnDataTableCallBack);
}

function ReturnDataTableCallBack(result)
{
var i = 0;
var ddl = document.getElementById("sState");
var optionItem;
iLength = document.getElementById("sState").options.length;
document.getElementById("sState").visible = true;
document.getElementById("txtAreaResult").value = result.get_data();
for(i=0; i<iLength; i++)
{
document.getElementById("sState").options[0] = null;
}

for(i=0; i<result.length; i++)
{
document.getElementById("sState").options.add(newOption(resultIdea [I]["State"],resultIdea [I]["tblStateId"]))
}
}


I think you should be able to write code like:
for (var i = 0; i < results.get_length(); i++) {
alert(results.getItem(i).State);
}
As a side note: there are several ways that you can use to 'discover'the structure of an object. One way is to usedebug.dump(object,name[,recursive[,indentationPadding]]), which shouldadd information about an object to the trace. Another way is to loopthrough the members of an object, like "for (m in myObject) alert(m);".

Great information. It got me on the right track. I foundthat the following pseudo-javascript was what was necessary:
for(i=0; i<result.get_length(); i++)
{
var optAdd = newOption(result.getItem(i).getProperty("State"),result.getItem(i).getProperty("tblStateId"));
document.getElementById("sState").options.add(optAdd);
}
The .State and .tblStateId properties did not return a value, but thegetProperty("State") and getProperty("tblStateId") did what wasnecessary.
Do you have a complete example of the debug.dump() method?
Wally

You could use "get_State()" instead of "getProperty('State')" too (which I think is nicer).
To use debug.dump, try something like "debug.dump(results, "my results", true)".

How would you do this declaratively? For example, if I wanted to bind the first state returned to a label...I've tried this, and it doesn't work:
<binding id="binding1" dataContext="dataSource1" dataPath="data[0].State" property="text" automatic="false" />
I can't figure out what to put in the dataPath. Anyone have some guidance?

Returning dynamic JSON from ASP.Net

I have an ASP.Net web service that I want to return a JSON response. The method that I am working on in particular calls another web service that already gives me a JSON response. All I want to do is return that to the caller of my webservice (it will be a .htm/.js caller).

I have already found a way to make it work, but it doesn't seem optimal. If I define some local objects in my web service that look like the JSON response I get from the third party web service, I can deserialize the response into my local objects, and return the object from my web service. If I call the service from the browser with the JSON request type, I get back the correct JSON response. But in this case I have taken a JSON string, converted it to an object and back again, which seems like too much work. Plus, I'll have an extra layer of objects that have to be kept in sync with the third party response.

If I just return the JSON that I get from the third party webservice (as a string), in the browser I get a string that can't be EVAL'd into a js object. It has quotes around the whole thing and all the internal quotes are escaped, etc. It is basically just a string, not JSON.

So, the question is, how can I define a web service method that returns any JSON that can be called from a simple htm/js client and get it to return valid (ready to eval) JSON? What return type should I be using?

Backslider

ASP.NET AJAX web services only support returning objects. These objects will be serialized by the AJAX services layer. There is no returntype to hold raw JSON , and skip this serialization.

However if you return the JSON as a string, you should be able to eval the response once to get the string response from thirdparty webservice(If you use a proxy generated by ASP.NET AJAX it would returned an already eval'ed response). Once you get the string, you should be able to eval it again to get the actual js object.


Have you tried letting your server convert it into a .Net object?

Returning Exceptions

Hi

Using the example:
http://atlas.asp.net/quickstart/atlas/doc/services/default.aspx#catchingExceptions

Both IE and FF throw javascript errors

FF: result has no properties
IE: 'null' is null or not an object - 'null' being the result argument from the OnError callback method

See for youself:
http://atlas.asp.net/quickstart/atlas/samples/services/ExceptionPage.aspx

Is this a bug with the Jan06 release? What is the best way around this?

Craig

I just downloaded the Jan06 release and I'm experiencing the same problem...


Hi people,

i'm using January release also, when i run the example from the Atlas quickstart site, i got the same exceptions.

But if i try the example locally (copy the examples to my computer Atlas site), they are working well.

I think the Atlas site is using an older release.

So, Atlas team please, update the quickstart samples site. It's very important for the people who are starting with Atlas have confidence about the samples

This way it's much harder to find the errors.


Actually, I can reproduce the problem running the example locally. In my scenerio, I use an ASPX page to host the web method as follows:

MyPage.aspx.cs
[WebMethod]
public void GetData() {
throw new ArgumentException("throw exception");
}

MyPage.aspx
<scriptlanguage="javascript"type="text/javascript">
functionCallServer() {
PageMethods.GetData(,OnComplete, OnTimeout, OnError);
}

function OnComplete() {
alert("Complete");
}

function OnTimeout(result) {
alert(result);
}

function OnError(result) {
alert(result);
}
</script>

<!-- Call the server from a HTML button -->
<inputtype="button"value="Call Server"onclick="CallServer();"/>


you're right,

If i move the method to the same page, i got a null argument in the error delegate.

I tried to add

<atlas:ScriptManagerID="scriptManager"runat="server"EnablePartialRendering="true"

OnPageError="OnScriptManagerPageError">

<ErrorTemplate>

Ha ocurrido un error al procesar esta acción.<br/>

<spanid="errorMessageLabel"></span>

<hr/>

<buttonid="okButton"type="button">

OK</button>

</ErrorTemplate>

</atlas:ScriptManager>

and the server script

<scripttype="text/C#"runat="server">

[WebMethod]

publicvoid ExceptionTest(String someParam)

{

thrownewInvalidOperationException("foo");

}

protectedvoid OnScriptManagerPageError(object sender,PageErrorEventArgs e)

{

// Set e.ErrorMessage to something you want to send down to the client

e.ErrorMessage = (String.IsNullOrEmpty(e.Error.InnerException.Message)) ? e.Error.Message : e.Error.InnerException.Message;

}

</script>

as i have seen at

http://www.nikhilk.net/AtlasM1Refresh.aspx

and the server function OnScriptManagerError is not called, even i checked with fiddler that the server response code is 500.

I'd like to know how to use the new feature of page error handling


Same problem here.
I'm executing a WebMethod and the error handling are returning a null value.

Somone knows how to catch error returned from the WebMethod?

It's a bug in Jan06?


hello guys.

well, i may be wrong since i've only started lookig at atlas today and i've also got this bug while throwing exceptions from web methods defined on the page. after trying to do some debugging, it looks like the problem is on Web.Net.WebResponse.get_objectmethod. the problem is that it gets the result and tries to deserialize it. however, when a method on a page throws an error, the result that is received on the client part is an html page which de JSON can't deserialize. this seems like a bug on the scriptmanager (is this the component that handles server side processing when one calls methods on a page? - ehy, don't forget that i just started today on this :) )
Hi,

we can distinguish 3 cases:

1) The Exception is raised in a method defined in a WebService.
In this case, an instance of the class Web.Net.MethodRequestError issent to the client. This object exposes three properties that give infoon the particular Exception raised: get_message(), get_stackTrace(),get_exceptionType().

2) The Exception is raised during an asynchronous postback.
This means we have declared at least one UpdatePanel. The Exception canbe raised, for example, in an event handler during the Page lifecycle.
In this case, the ScriptManager is able to send the error message downto the client and to display it using its <ErrorTemplate />.Moreover, the server can format the message to be sent to the client byhandling the PageError event of the ScriptManager.

3) The Exception is raised when calling a [WebMethod] defined in a Page.
In this case, no exception handling is performed by the Atlasframework, and the client receives (in the response) the tipical HTMLpage that is displayed on ASP.NET pages when an Exception is raised.

At this point, the the error callback could be declared in this way:

function onError(objError, response) {
if(objError) {
// Got a MethodRequestError instance.
}
else {
// Custom error handling.
alert(response.get_statusCode());
}
}

While the objError parameter is null, the second parameter is theresponse object and we can use it to display, for example, an alertwith the HTTP status code (obviously, while waiting for an improved exception handling in the next release).
hello.

yes, i got into that conclusion after debugging the atlas script file...i think that it should be fixed before the final release...

Returning results from a page method call

In my ASP.NET AJAX web site, I am attempting to use Page Methods to return data from the web server. I would like to be able to return the value from a page method like so:

function GetValue()
{
return PageMethods.GetValueFromServer();
}

function ManipulateValue()
{
var myValue = GetValue();

// Do something with myValue
}

Unfortunately, calling a page method requires the use of a callback function. I really need to retrieve the value without having to store it in a global variable in the callback function; is there any way to do this?

function GetValue(){ return PageMethods.GetValueFromServer( function(result){// The result that is returned from server //Now do what ever you would like to do.} );}
Maybe you can try something like this

KaziManzurRashid:

function GetValue()
{
return PageMethods.GetValueFromServer(

function(result)
{
return result;
}

);
}

Maybe you can try something like this


I tried your code, returning the result in the nested callback function (see above), but when I returned to the code that calls GetValue() the value that ends up getting returned is undefined. :-(


Yes that becasue the ajax call is async. it does not wait for the ajax call to complete, why do not you call the GetValue in the Callback?


KaziManzurRashid:

Yes that becasue the ajax call is async. it does not wait for the ajax call to complete,why do not you call the GetValue in the Callback?



Okay, I'm somewhat confused. I call GetValue(), which calls an asynchronous server method and is passed an in-line Javascript callback function. Are you saying that I should, in the callback function, call GetValue() again? If so, won't that just cause an infinite loop?


Sorry let me rephrase. You do not need to call the GetValue again in the callback although doing it will not make it recursive. You can call your desired outer ManipulateValue function in the callback but in that case the ManipulateValue will not again call the GetValue.


KaziManzurRashid:

Sorry let me rephrase. You do not need to call the GetValue again in the callback although doing it will not make it recursive. You can call your desired outer ManipulateValue function in the callback but in that case the ManipulateValue will not again call the GetValue.

Okay, I tried that but still no luck. Here is the code I am using; perhaps you can shed some insight on to what I'm doing wrong? It looks like this is, in fact, causing an infinite loop.

Javascript code:

function PrintDateTime()
{
var dateTimeFromServer = RetrieveDateTime();
$get("myLabel").innerHTML = dateTimeFromServer;
}

function RetrieveDateTime();
{
return GetAjaxValue();
}

function GetAjaxValue()
{
return PageMethods.GetCurrentDateTime(
function (result)
{
return RetrieveDateTime();
}
);
}

C# code:

[WebMethod]
public static string GetCurrentDateTime()
{
return DateTime.Now.ToString();
}


You can do it in the following way:

function GetAjaxValue(){ return PageMethods.GetCurrentDateTime( function (result) { $get("myLabel").innerHTML = result; } );} function showCurrentDateTime(){GetAjaxValue();}

Just call the showCurrentDateTime in your code when you want to show it.


KaziManzurRashid:

You can do it in the following way:

function GetAjaxValue()
{
return PageMethods.GetCurrentDateTime(
function (result)
{
$get("myLabel").innerHTML = result;
}
);
}
function showCurrentDateTime()
{
GetAjaxValue();
}

Just call the showCurrentDateTime in your code when you want to show it.

Thanks for the time you've spent addressing my questions, Kazi. Unfortunately, in my code I really need to return the value in the RetrieveDateTime() function. The code in PrintDateTime() is just used for illustration; I need to do more than just put it in a label. To clarify, here's exactly what I want to do:

var myValue = RetrieveDateTime();

The value is not being displayed on screen but is being used by logic within a JavaScript function. I really just want to be able to call a JavaScipt function and return a value that I can use in the rest of the code.


Hi, Well you have to undertand the nature, it is always. and thats why the best place to assume the value is availabe is the Callback. If you can describe more of your scenerio then I can help.


Hi,

Thank you for your post!

It seems that you have misunderstanding on AJAX and callback.

The result cann't be obtained like this:

var myValue = GetValue();

It must be obtained like this:

function SetSessionValue(key, value)
{
PageMethods.SetSessionValue(key, value,
OnSucceeded, OnFailed);
}

// Callback function invoked on successful
// completion of the page method.
function OnSucceeded(result, userContext, methodName)
{
if (methodName == "GetSessionValue")
{
displayElement.innerHTML = "Current session state value: " +
result;
}
}

// Callback function invoked on failure
// of the page method.
function OnFailed(error, userContext, methodName)
{
if(error !== null)
{
displayElement.innerHTML = "An error occurred: " +
error.get_message();
}
}

For more information about callback and webmethod, seehttp://www.asp.net/ajax/documentation/live/tutorials/ExposingWebServicesToAJAXTutorial.aspx

If you have further questions,let me know.

Best Regards,

RightClick Menu

Dear Team

I am using ASP.NET2.0, C#, JavaScript, AJAX

I want to make a right click menu working on GridView, with some items inside the meun, and when I press on it I can handle it from Javascript or from server side and I can fill this menu from Server side if it is possible.

So how can I do that?

Thank you.

dear Team
i did use the control found in this site:http://msdn.microsoft.com/msdnmag/issues/05/02/CuttingEdge/

i am working with ASP.NET2.0, C#, AJAX, JAVASCRIPT.

if you please i want to know the following:
1 - why dose the context menu postback, i mean if i want only to use it in the client side, is there a way for it.
2 - i am using the context menu with a gridview so i want to know the current row index, from javascript and if possible from C# too.
3 - i want to know what i clicked on the menu from Javascript.

please advise me what to do.
i am stuck in this problem for 1 week now and i didnt find any solution.
i want you to know that i download the control and i use it sand it is working for me but i want to know these point that will solve my whole problem.

thank you so much in advance.
this is my Email:
zonzone@.hotmail.com

2012年3月21日水曜日

RoundedCornersExtender Panel border (right-hand side) disappears when PopupControlExtender

Good Morning,

Trying to solve an annoying problem with the rounded corners extender from ajax control kit for the asp.net 20.0 framework.

When I click on textboxtxt6 (see below), the popup control extender causes txt6_details to appear, but when clicked on, the right-hand side border of theRoundedCornersExtender disappears (top, bottom and left-hand sides of border remain). Has anyone come across this problem before?

Thanks,
webconsult

<cc2:RoundedCornersExtenderID="RoundedCornersExtender1"TargetControlID="Panel1"Radius="10"Corners="All"runat="server"BorderColor="#8f8f8f"/>
<asp:Panelrunat="server"ID="Panel1">
<asp:tablerunat="server"width="100%"border="0"cellspacing="12"id="Table1">
.
.
<asp:UpdatePanelrunat="server"UpdateMode="Conditional"ID="UpdatePanel2">
<ContentTemplate>
<asp:UpdateProgressID="UpdateProgress1"runat="server"AssociatedUpdatePanelID="UpdatePanel2">
<ProgressTemplate>
<tableborder=0><tr><td><imgsrc="images/ajax-loader.gif"alt=""/></td><td><asp:LabelID="Label10"CssClass="bodytext"runat="server"Text="Saving details..."ForeColor="#1C7BB5"></asp:Label></td></tr><tr><tdcolspan="2"> </td></tr></table>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:TextBoxID="txt6"runat="server"></asp:TextBox>
<cc2:PopupControlExtenderID="PopupControlExtender1"TargetControlID="txt6"PopupControlID="txt6_details"OffsetY="25"runat="server">
</cc2:PopupControlExtender>
<cc2:FilteredTextBoxExtenderID="FilteredTextBoxExtender1"runat="server"
TargetControlID="txt6"
FilterType="Custom, Numbers"
ValidChars="-."/>
<asp:TextBoxID="txt6_details"runat="server"CssClass="popupclass"Width="300"OnTextChanged="txt6_details_TextChanged"
MaxLength="500"Rows="5"TextMode="MultiLine"AutoPostBack="true"></asp:TextBox>
<cc2:TextBoxWatermarkExtenderID="TextBoxWatermarkExtender1"runat="server"TargetControlID="txt6_details"WatermarkText="If entering a figure please provide an explanation here..."WatermarkCssClass="watermarkclass">
</cc2:TextBoxWatermarkExtender>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTriggerControlID="txt6_details"EventName="TextChanged"/>
</Triggers>
</asp:UpdatePanel>
.
.
</asp:table>
</asp:panel

For some reason, changing the txt6_details textbox width to 200 seemed to have fixed the problem.