我有一个使用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一样?或者我可能不知道某种类型的列属性?
答案 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 is a sum');>" + e.Item.Cells[4].Text + "</a>";
}
我不得不使用 
而不是仅仅出于某种原因使用空格,否则它将用“”替换空格。不知道为什么。
我不太喜欢硬编码的细胞[4]。但是没有重载的方法可以接受字符串,所以现在就足够了。