2009-12-14 49 views
1

傍晚所有。使用字典方法在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")) 
        { 
         Dictionary<String, String> headerTooltips = new Dictionary<String, String>(); 
         headerTooltips["Product ID"] = "A unique product ID"; 
         headerTooltips["Product Description"] = "Description of product"; 

         String headerText = cell.Text; 
         cell.Attributes.Add("title", headerTooltips[headerText]); 

        } 
       } 
      } 
     } 

    } 

本質上講,我想實現的是由每個列標題會出現一個工具提示(即產品標識和產品說明。)

然而,當我使用上面的代碼,我收到以下錯誤消息「給定的密鑰不在字典中。」這出現在

cell.Attributes.Add("title", headerTooltips[headerText]); 

行。

有人可以用我的方式指出錯誤嗎?感謝您的任何幫助或建議。

+0

你說你要顯示的標題行的提示,但你的代碼表明您要使用的工具提示,以顯示產品的詳細信息等,因此,如果一個特定的產品對應到標題行,網格的實際行中包含哪些數據?你確定你不想在數據行的單元而不是標題上使用工具提示嗎? – 2009-12-14 21:13:46

+0

你好安德斯 - 沒有肯定的標題行上的工具提示。我使用產品ID和描述作爲示例,實際上它們將被編碼,這對用戶意義不大,因此我想爲每個列標題分配一個工具提示,以解釋標題實際上是什麼... ...道歉混亂。 這可能只是我嘗試在新手上適應的很糟糕的代碼。如果你可以想出一個替代方案來完成這個任務,請讓我知道! – MrDean 2009-12-14 21:16:40

回答

1

錯誤是由於您沒有向字典中添加與cell.Text的值相對應的條目而導致的。您的字典中包含的唯一鍵是「產品ID」和「產品說明」,因此除非您的單元格中包含此文本,否則它將始終失敗。你可以做到這一點:

if (headerTooltips.ContainsKey(headerText)) 
{ 
    cell.Attributes.Add("title", headerTooltips[headerText]); 
} 

哪些讓你超出例外,但不要認爲它做你正在嘗試完成。

編輯:

你只想cell.Text以顯示爲工具提示?如果是,那麼這樣做:

// This is only replacing the foreach part, the rest of your code is still valid 
foreach (System.Web.UI.Control ctl in cell.Controls) 
{ 
    if (ctl.GetType().ToString().Contains("DataControlLinkButton")) 
    { 
     cell.Attributes.Add("title", cell.Text); 
    } 
} 
+0

你好Cory,謝謝你的建議。我用產品ID(取代標題)嘗試了它,並出現相同的消息。 不用擔心太多,謝謝您的意見。 – MrDean 2009-12-14 21:11:30