you can do using javascript also
<script type="text/javascript">
///<summary>Method for Web Service Failed Event</summary>
///<param name="error">Error Object</param>
///<returns>false</returns>
function onFailedWS(error)
{
alert(error.get_message());
}
///<summary>This is the callback function that processes the Web Service return value.</summary>
///<param name="result">result Object from Web Service</param>
function SucceededCallback(result)
{
//get the div element
var RsltElem = $get("testDiv");
//update div inner Html
RsltElem.innerHTML =result;
//format table inside the div
//if you have multiple table call format table in loop
formatTable(RsltElem.getElementsByTagName('table')[0].id)
}
///<summary>This function calls the GetControlHtml Web Service method.</summary>
///<param name="error">Succeed Object</param>
///<param name="error">Error Object</param>
function getData(controlLocation)
{
ScriptService.GetControlHtml(controlLocation, SucceededCallback, onFailedWS);
}
function formatTable(gvID){
//get the gridview
var gv = $get(gvID);
//get numbers of column in grid view
cols = gv.rows[0].cells.length - 1;
//get numbers of rows in grid view
rows = gv.rows.length -1;
//intialized looping variables
var i=0;
var j=0;
//loop for each row in gridview
for(i=1;i<rows;i++){
//attach mouseover event for row
$addHandler(gv.rows[i], "mouseover", mouseOver);
//attach mouseout event for row
$addHandler(gv.rows[i], "mouseout", mouseOut);
//attach click event for row
$addHandler(gv.rows[i], "click", onClick);
//loop for each cell in row
for(j=0;j<cols;j++){
//set tooltip for cells in row
setTitle(gv.rows[i].cells[j]);
}
}
}
function setTitle(object){
//check browser type
if(Sys.Browser.name =="Firefox"){
object.title = object.textContent;
}
else{
object.title = object.innerText;
}
}
function mouseOver(objectEvent){
//is row already clicked
if(! isClickedStyleSet(objectEvent.target.parentNode.className))
{
//set class name
objectEvent.target.parentNode.className = "row-over" ;
//check browser type
if(Sys.Browser.name !="Firefox"){
objectEvent.target.parentNode.style.cursor ="hand";
}}
}
function mouseOut(objectEvent){
//is row already clicked
if(! isClickedStyleSet(objectEvent.target.parentNode.className)){
//set class name
objectEvent.target.parentNode.className = "data-row" ;
}}
function onClick(objectEvent){
//set class name
if(! isClickedStyleSet(objectEvent.target.parentNode.className))
{
objectEvent.target.parentNode.className = "row-select" ;
}
else
{
objectEvent.target.parentNode.className = "data-row" ;
}
}
function isClickedStyleSet(className){
//if row is already clicked return true
if(className == "row-select"){
return true;
}
return false;
}
</script>http://weblogs.asp.net/sanjeevagarwal/archive/2008/07/22/Dynamically-create-ASP.NET-user-control-using-ASP.NET-Ajax-and-Web-Service.aspx