gridview中的工具提示使用字典方法

时间:2009-12-14 21:00:04

标签: c# gridview dictionary tooltip

晚上。

我有以下代码需要调查 - 基本上我抓着稻草在这里。我有一个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]);

                    }
                }
            }
        }

    }

基本上我想要实现的是每个列标题显示的工具提示(即产品ID和产品描述。)

但是,当我使用上面的代码时,我收到以下错误消息“给定的密钥不存在于字典中”。这出现在

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

线。

有人可以用我的方式指出错误吗?感谢您提供任何帮助或建议。

1 个答案:

答案 0 :(得分: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);
    }
}