2009-12-14 93 views
0

完整的新手(誰也病了,感覺特別厚)工具提示在工作的GridView

我有下面的代碼,讓我一個通用的「工具提示文本」爲在GridView每個標題....偉大。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.Header) 
    { 
     foreach (TableCell cell in e.Row.Cells) 
     { 
      foreach (System.Web.UI.Control ctl in cell.Controls) 
      { 
       if (ctl.GetType().ToString().Contains("DataControlLinkButton")) 
       { 
        cell.Attributes.Add(
         "title", "tooltip text for " + ((LinkButton)ctl).Text); 
       } 
      } 
     } 
    } 
} 

什麼也不是那麼偉大,是因爲我顯然不希望所有的細胞返回相同的通用的「工具欄文本」。

像我這樣的一個簡單代理如何修改代碼,以便對於ProductID標題單元格tt表示「唯一產品參考」,對於產品描述標題單元格tt返回「產品說明」。

對昏暗問題的道歉。

回答

0

如果我理解正確的,你想要的工具提示對應於列標題設置?

你可以做這樣的事情:

if (ctl.GetType().ToString().Contains("DataControlLinkButton")) 
{ 
    String headerText = cell.Text; 
    cell.Attributes.Add("title", headerTooltips[headerText]); 
} 

其中headerTooltips是一本字典前的定義:

Dictionary<String, String> headerTooltips = new Dictionary<String, String>(); 
headerTooltips["Product ID"] = "A unique product ID"; 
[...] 
+0

你好Wookai..I都試過,但我得到一個「給定的關鍵是不目前在字典中。「 'cell.attributes.add'('title'...'line ...任何想法爲什麼? – MrDean

+0

也許你沒有用正確的鍵創建字典?你如何構造它?嘗試打印headerText並看看是否它對應於您用來創建字典的內容。 – Wookai

0

我會用一個TemplateField

<asp:GridView ...> 
    ... 
    <asp:TemplateField> 
     <ItemTemplate> 
     <a href='<%# Eval("ProductID", "Edit.aspx?{0}") %>' title='<%# Eval("ProductDescription") %>'><%# Eval("ProductID") %></a> 
     </ItemTemplate> 
    </asp:TemplateField> 
    ... 
</asp:GridView> 

More about using Templates