我的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"
整个字符串显示在鼠标上方
我怎样才能达到这样的效果?
该方法的整个代码是:
"CENTRO DIURNO PSICHIATRI..."
答案 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();
}
}
}