天天看點

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

原文位址:http://www.dotnetbips.com/articles/36f06160-5221-4d27-a177-320927f4b962.aspx

[原文源碼下載下傳]

[譯者改後源碼下載下傳]

原文釋出日期:2007.05.06

作者:Bipin Joshi

翻譯:webabcd

介紹

ASP.NET AJAX可以使你的web應用程式具有更豐富的功能和更多的使用者響應。 本文中,我将示範如何通過ASP.NET AJAX的幫助,給像GridView這樣的資料綁定控件的資料行增加popup提示框。

初看這個需求後,你可能會想到使用AJAX Control Toolkit來實作這個功能。 因為AJAX Control ToolKit裡包含一個懸浮菜單控件(HoverMenu)。 但是,如果菜單是動态讀取的話,你就不能使用這個控件了。 一個HoverMenu Extender僅能被附加到一個目标控件。 我們可以想象一下,如果你有一個GridView,它裡面有一個HyperLinkField類型的列。 當使用者的滑鼠經過這個HyperLink的時候,你希望彈出一個Popup提示框來顯示該資料行的詳細資訊。 此時,使用AJAX Control Toolkit就不能達到我們的要求了。 本文中,我将圖文結合的示範如何完成這樣的功能。

提示框的圖例

在開講之前讓我們先來看一看這個提示框是如何顯現的。 請看下圖:

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

上圖示範了一個内含GridView控件的Web窗體。 這個GridView控件由一個HyperLinkField類型的列構成。 當你的滑鼠浮動到任何超鍊上的時候,就會彈出一個提示框,用來顯示改資料行的更詳細的資訊。 這段通過提示框顯示的描述文本是從資料庫中動态讀取的,也就是說它不是靜态文本。

現在就讓我們開始開發這個提示框吧!

首先建立一個名為AJAXTooltip的ASP.NET AJAX-Enabled Web Site。

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

建立資料庫

為了實作本示例的功能,你需要建立一個資料庫,該資料庫内有一個名為Menus的表。 右鍵單擊App_Data檔案夾,選擇“添加新項…”。 然後添加一個名為Database.mdf的SQL資料庫。

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

在伺服器資源浏覽器中建立一個名為Menus的表。 其表結構如下:

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

MenuID列是關鍵字,它是每一條菜單的唯一ID。 Text列儲存着用來在浏覽器中顯示的菜單項的文本。 NavigateUrl列為單擊該菜單項後應當連結到的URL。 最後的TooltipText列儲存的是當滑鼠經過菜單項後所顯示的詳細文本。

建完表後,再在表中插入一些資料,這樣就會給之後測試你的web程式時提供友善。

建立Web Service

ASP.NET AJAX允許你通過用戶端腳本調用web services。 在我們的這個例子中就使用了這項技術。 首先在你的web程式中建立一個web service(WebService.asmx),并在其内添加一個web method。代碼如下:

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

[WebMethod]

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

public   string  GetToolTipText( int  menuid) 

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

{

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    string strConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    SqlConnection cnn = new SqlConnection(strConn);

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    cnn.Open();

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    SqlCommand cmd = new SqlCommand();

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    cmd.Connection = cnn;

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    cmd.CommandText = "select tooltiptext from menus where [email protected]";

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    SqlParameter p = new SqlParameter("@id", menuid);

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    cmd.Parameters.Add(p);

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    object obj = cmd.ExecuteScalar();

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    cnn.Close();

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    return obj.ToString();

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

}

其中的GetToolTipText()方法需要一個菜單ID作為參數,然後傳回提示框文本。 這段代碼首先使用ConfigurationManager類從web.config中擷取資料庫連接配接字元串。 然後建立一個SqlConnection和一個SqlCommand對象。 最後,使用SqlCommand類的ExecuteScalar()方法,根據菜單ID獲得相應的提示框文本。

資料庫連接配接字元串儲存在web.config中的<connectionStrings>節點下。代碼如下:

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

< connectionStrings >

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

     < add  name ="connstr"  connectionString ="Data Source=./SQLEXPRESS;AttachDbFilename=|DataDirectory|/Database.mdf;Integrated Security=True;User Instance=True"  providerName ="System.Data.SqlClient"   />

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

</ connectionStrings >

注意Database.mdf檔案的路徑使用的是AttachDbFilename屬性。 用這種方法就會使App_Data檔案夾(DataDirectory)中的資料庫附加到SQL Server Express上。

到此之前都和以往開發web service是一樣的。 但是,這個web service是從用戶端腳本調用的。 也就是說,用戶端腳本為了調用這個web service需要由一個代理。 我們可以給這個web service增加一個[ScriptService]屬性來實作這個特性。 該屬性在System.Script.Services命名空間内。 該命名空間在System.Web.Extensions程式集中。 [ScriptService]屬性必須像下面這樣應用到web service類中。

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

[ScriptService]

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

public   class  WebService : System.Web.Services.WebService

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

這樣就完成了我們的web service

開發Web Form

現在打開預設的web form – Default.aspx – 確定其内有ScriptManager控件的執行個體。 拖拽一個SQL資料源控件到頁上,并配置它,以使它可以從Menus表中讀取全部記錄。

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

接下來,拖拽一個GridView控件進來并設定它的DataSourceID屬性為SqlDataSource1。 繼續設定這個GridView控件,使它有一個類型為HyperLinkField的列。 然後如下設定該HyperLinkField列的屬性:

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

指定DataNavigateUrlFields屬性為一個用逗号分隔的字段清單,其中所有字段的值都可以作用于URL中。 DataNavigateUrlFormatString屬性指向格式化後的URL。 因為我們的Menus表中的NavigateUrl列儲存的就是URL,是以我們不需要做任何格式化的工作。 是以DataNavigateUrlFormatString屬性隻包含一個站位符 – {0}。 在運作時,NavigateUrl列的真實值将會替代{0}。 最後,DataTextField屬性的值為超鍊所顯示的文本。

在我們如此設定了GridView控件之後,再拖拽一個Panel控件到頁上。 設定這個Panel控件的BorderStyle屬性為Solid,BorderColor屬性為#FF8000,BackColor屬性為Yellow。 這個Panel控件是用來顯示提示框的。

最後,我們需要使用ScriptManager控件添加一個指向到我們的web service的引用。 如下圖所示,定位到ScriptManager的Services屬性,然後添加一個指向到我們的web service的引用即可。

建立AJAX類

ASP.NET AJAX給用戶端腳本增加一些面向對象的特性。 為了使用這些特性,我們需要開發一個名為ToolTip的類。 這個ToolTip類是用來顯示提示框的,我們首先要隐藏它,然後調用我們的web service。 ToolTip類的全部代碼如下:

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

< script type = " text/javascript " >

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

Type.registerNamespace( " Demo " );

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

Demo.ToolTip = function (panelid)

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

{

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  this._panelid=panelid;

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  this.x=0;

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  this.y=0;

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

}

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

Demo.ToolTip.prototype =

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

{

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  get_PanelID:function()

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

{

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    return this._panelid;

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  },

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  set_PanelID:function(panelid)

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

{

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    this._panelid=panelid;

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  },

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  BeginShowToolTip:function(event,menuid)

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

{

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    WebService.GetToolTipText(menuid,this.

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    EndShowToolTip,this.OnError,this.OnTimeOut);

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    this.x=event.clientX + 10;

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    this.y=event.clientY + 10;

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  },

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  EndShowToolTip:function(result)

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

{

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    var pnl=$get(tooltip.get_PanelID());

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    if(pnl.innerText!=null)

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

{

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

      pnl.innerText=result;

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    }

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    else

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

{

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

      pnl.textContent=result;

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    }

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  pnl.style.visibility="visible";

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  pnl.style.display="inline";

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  pnl.style.position="absolute";

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  pnl.style.left= tooltip.x + "px";

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  pnl.style.top= tooltip.y + "px";

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  },

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  HideToolTip:function()

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

{

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    var pnl=$get(this.get_PanelID());

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    pnl.style.visibility="hidden";

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    pnl.style.display="none";

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  },

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  OnError:function(result)

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

{

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    alert(result.get_message());

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  },         

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  OnTimeOut:function(result)

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

{

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    alert(result);

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

  }

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

}

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

Demo.ToolTip.registerClass( " Demo.ToolTip " );

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

</ script >

我們需要把上面的這段腳本放到ScriptManager标記之後。 一般來說,你應該把它放到</form>标簽之後。

這段代碼首先使用Type類的registerNamespace()方法注冊了一個名為Demo的命名空間。

然後建立了一個名為ToolTip的類。 這個ToolTip類的構造函數需要一個用來顯示提示框的Panel的ID作為參數。 這個Panel的ID存儲在一個名為_panelid的私有變量中。 另外,構造函數内還聲明兩個私有變量 – (x 和 y) – 它們用來儲存滑鼠的坐标。

在ToolTip類的原型中定義了一些屬性和方法。 getter和setter方法用來讀取和設定PanelID這個屬性。 PanelID這個屬性非常簡單,就是設定和傳回變量_panelid而已。

BeginShowToolTip()方法用來調用web service的GetToolTipText()方法。 它需要兩個參數 - (event和menuid)。 這兩個參數所提供的資訊分别是目前的JavaScript事件和需要顯示的提示框的菜單項的ID。 其内部會調用web service的GetToolTipText()方法。 注意,WebService會為真實的web service生成一個用戶端代理。 GetToolTipText()方法的第1個參數是menuid。 第2、3、4個參數分别是執行成功、失敗、逾時後所調用的方法。 最後,變量x和y被設定為滑鼠目前的位置。 為了確定彈出框不會顯示在滑鼠下面,是以給x和y坐标分别加上10個像素的偏移量。 你也可以根據不同的需求調整這個偏移量。 當使用者的滑鼠經過HyperLinkField列的超鍊上的時候,就會調用這個BeginShowToolTip()方法。

一旦web service傳回了提示框的文本就會調用EndShowToolTip()方法。 web service的傳回值就是該方法的result參數。 就下來的代碼通過設定Panel的visibility、position、left和top屬性來顯示它自己。 注意,為了使我們的這個類能在IE和FireFox中工作,必須要保證innerText屬性是有效的。

HideToolTip()方法會在滑鼠離開超鍊後被調用,它會通過設定Panel的CSS屬性來隐藏掉Panel。

OnError()和OnTimeout()方法會以彈出視窗的方式來顯示相應的錯誤資訊。

最後,用我們剛建立好的這個ToolTip類的registerClass()方法将ToolTip類注冊到ASP.NET AJAX的用戶端架構。

現在,将如下這段腳本添加到web form的<head>節點中。

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

< script type = " text/javascript " >

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

var  tooltip = null ;    

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

function  pageLoad()

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

{

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

tooltip=new Demo.ToolTip("Panel1");

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

tooltip.HideToolTip();

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

}

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

</ script >

這段腳本中有一個名為pageLoad()的函數。 當該網頁在浏覽器中加載的時候,這個函數會被ASP.NET AJAX架構自動地調用。 在這個函數内部首先會建立一個ToolTip類的執行個體, 然後調用ToolTip類的HideToolTip()方法來隐藏掉Panel。

附加上JavaScript事件處理器

我們的GridView控件所包括的資料行是依靠于資料庫中的Menus表中的記錄的。 為了使使用者的滑鼠在經過任何超鍊上的時候都調用BeginShowToolTip()方法,我們需要在GridView的RowDataBound事件内寫一些代碼。 其全部内容如下:

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

protected   void  GridView1_RowDataBound( object  sender, GridViewRowEventArgs e)

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

{

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    if (e.Row.RowType == DataControlRowType.DataRow)

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)
[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

{

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

        HyperLink hl = e.Row.Cells[0].Controls[0] as HyperLink;

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

        int menuid = Convert.ToInt32(GridView1.DataKeys[e.Row.RowIndex].Value);

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

        hl.Attributes.Add("onmouseover", "tooltip.BeginShowToolTip(event," + menuid + ")");

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

        hl.Attributes.Add("onmouseout", "tooltip.HideToolTip()");

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

    }

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

}

GridView的每一行,包括HeaderRow和FooterRow都會觸發RowDataBound事件。 是以我們首先要檢查目前行是否是DataRow,也就是說,行中必須包括實際的資料值。 如果是資料行,那麼就使用Cell中的控件集合來得到HyperLink控件。 菜單ID可以通過GridView的DataKeys集合來擷取。 最後,使用HyperLink控件的Attributes集合來增加名為onmouseover和onmouseout的用戶端事件處理器。 onmouseover對應ToolTip類的BeginShowToolTip()方法,onmouseout對應ToolTip的HideToolTip()方法。

以上就是本文的全部内容。 你現在就可以運作一下這個web form,看看我們做的這個提示框的效果。

總結

ASP.NET AJAX允許你通過用戶端腳本調用web services。 這個特性可以帶給我們很多不同以往的實作。 在本例中,我們給GridView的資料行建立了一個動态的提示框。 ASP.NET AJAX extensions可以讓我們以面向對象的方式來編寫JavaScript,它将使我們的代碼變得更健壯、更清晰。

作者:Bipin Joshi

Email:http://www.dotnetbips.com/contact.aspx

簡介:Bipin Joshi是DotNetBips.com的管理者。他是http://www.binaryintellect.com/的發起人,這個公司提供.NET framwork的教育訓練和咨詢服務。他在印度孟買為開發者提供教育訓練。他也是微軟的MVP(ASP.Net)和ASPInsiders的會員。

[翻譯]使用ASP.NET AJAX讓GridView的資料行顯示提示框(ToolTip)

webabcd 2007-05-13 20:22 發表評論

文章來源:http://www.cnblogs.com/webabcd/archive/2007/05/13/744902.html