晚上。
我有以下代码需要调查 - 基本上我抓着稻草在这里。我有一个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]);
线。
有人可以用我的方式指出错误吗?感谢您提供任何帮助或建议。
答案 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);
}
}