将HTML添加到DataGrid中的特定单元格

时间:2015-03-23 13:35:15

标签: c# asp.net

我有一个使用DataTable填充的DataGrid。

DataTable的最后一行是列的总和。我想在最后一行的特定列中添加HTML代码(HTML代码将调用javascript,它将显示工具提示)。

所以我想做这样的事情

DataTable dtName = new DataTable();
//**code that populates dtName**
dtName.Rows[dtName.Rows.Count - 1]["Column4_sum"] = "<a onclick=ShowToolTip('ToolTip','This is a sum');>" + dtName.Rows[dtName.Rows.Count - 1]["Column4_sum"] + "</a>";

dataGrid.DataSource = dtName;
dataGrid.DataBind();

我收到错误

  

输入字符串的格式不正确。不能存储&lt; 61920&gt;在   Column4_sum列。预期类型为十进制。

我知道我不能以十进制存储字符串。我正在寻找任何类型的解决方案。就像在绑定之后修改DataGrid一样?或者我可能不知道某种类型的列属性?

2 个答案:

答案 0 :(得分:0)

您拥有它的方式,您正在更改DataTable中的值。 您可以尝试使用for循环而不是DataBind,dataGrid.Rows.Add()来填充网格,并在单元级别使用以下内容

  

.Attributes.Add(“onclick”,“your javascript”);

答案 1 :(得分:0)

我使用以下代码来解决我的问题。

protected void dataGrid_ItemDataBound(object sender, DataGridItemEventArgs e){

if (**code to identify last row in DataGrid. Our data had a flag to identify which is the last row**)
  e.Item.Cells[4].Text = "<a onclick=ShowToolTip('ToolTip','This&#32;is&#32;a&#32;sum');>" + e.Item.Cells[4].Text + "</a>";
}

我不得不使用&#32;而不是仅仅出于某种原因使用空格,否则它将用“”替换空格。不知道为什么。

我不太喜欢硬编码的细胞[4]。但是没有重载的方法可以接受字符串,所以现在就足够了。