在DataBind之后将工具提示添加到GridView中的项目

时间:2018-02-21 09:51:56

标签: c# asp.net

我的ASP页面完全填充在c#后面的代码中。

我必须这样做,因为我不知道从查询中得到了多少GridView。

所以我把这样一个占位符:

self

因此,我根据查询创建了尽可能多的DataTable。之后,我的代码会生成相同数量的GridView,我无法管理。

我的需要是"截断"一些数据最多25个字母,并在用鼠标移过时显示工具提示。

代码是:

<td>
    <asp:Label runat="server" ID="result"></asp:Label>
    <asp:HiddenField runat="server" ID="controlLoaded" />
    <asp:PlaceHolder runat="server" ID="phTest"></asp:PlaceHolder>
</td>

但GridViews与长&#34;字符串&#34;保持一致。

示例:gv.DataSource = dt; gv.DataBind(); int maxWordLength = 25; foreach (GridViewRow row in gv.Rows) { for (int i = 3; i <= 4; i++) { string tmpValore = row.Cells[i].Text.ToString(); int lungValore = tmpValore.Length; if (lungValore > maxWordLength) { string nuovoValore = tmpValore.Substring(0, maxWordLength) + "..."; row.Cells[i].Text = nuovoValore; row.Cells[i].ToolTip = tmpValore; } } } gv.DataBind(); 必须显示如下: "CENTRO DIURNO PSICHIATRICO CAMALEONTE"整个字符串显示在鼠标上方

屏幕截图: This is a screenshot:

我怎样才能达到这样的效果?

该方法的整个代码是:

"CENTRO DIURNO PSICHIATRI..."

1 个答案:

答案 0 :(得分:0)

在Gridview RowDataBound事件上写下这个。这对我有用。

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        string UnitaText = e.Row.Cells[3].Text;
        ViewState["OrigData"] = UnitaText;
        if (UnitaText.ToString().Length >= 25)
        {
            UnitaText = UnitaText.Substring(0, 25) + "...";
            //20 is the length of your string, you can change it to whatever length you want.
            e.Row.Cells[3].Text = UnitaText;
            e.Row.Cells[3].ToolTip = ViewState["OrigData"].ToString();
        }
    }
}