我必须为gridview编辑图像按钮添加工具提示。我编码为Commandfield。
<asp:CommandField ButtonType="Image"
HeaderStyle-HorizontalAlign="center"
EditText="Edit" UpdateText="Edit"
ShowEditButton="True"
ItemStyle-VerticalAlign="Top"
EditImageUrl="~/Images/edit.png"
UpdateImageUrl ="~/Images/Save.png" CancelImageUrl ="~/Images/cancel.png"
ItemStyle-Width="15px" ControlStyle-Width="15px">
</asp:CommandField>
是否可以在gridview命令域按钮类型中添加工具提示作为图像?
答案 0 :(得分:3)
以下代码效果很好:
protected void gvResourceEditor_RowDataBound(object sender, GridViewRowEventArgs e)
{
try
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[4].ToolTip = "Edit Resource Details";
if (e.Row.RowState == DataControlRowState.Edit || e.Row.RowState.ToString() == "Alternate, Edit")
{
int i = 0;
foreach (TableCell cell in e.Row.Cells)
{
if (e.Row.Cells.GetCellIndex(cell) == 4)
{
((System.Web.UI.WebControls.ImageButton)(e.Row.Cells[4].Controls[0])).ToolTip = "Update Resource Details";
((System.Web.UI.LiteralControl)(e.Row.Cells[4].Controls[1])).Text = " ";
((System.Web.UI.WebControls.ImageButton)(e.Row.Cells[4].Controls[2])).ToolTip = "Close Resource Details";
}
i++;
}
}
}
}
catch (Exception _e)
{
}
}
答案 1 :(得分:0)
或者你可以
定义gridview的命令字段的EditText属性(就像你一样),它将呈现为alt
标记的<input type='image' alt='Edit' />
属性:
<asp:CommandField ButtonType="Image" EditText="Edit" etc />
然后使用以下代码添加脚本标记以设置title
属性:
VB:
Protected Sub gvResourceEditor_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvResourceEditor.RowDataBound
Dim strScript as String = "$('#" + gvResourceEditor.ClientID + " input[type=image]').each(function(key, el) {el.title=el.alt;});"
Page.ClientScript.RegisterStartupScript(Me.GetType, "SetEditButtonTitle", strScript, True)
End Sub
CS:
protected void gvResourceEditor_RowDataBound(object sender, GridViewRowEventArgs e) {
string strScript = "$('#" + gvResourceEditor.ClientID + " input[type=image]').each(function(key, el) {el.title=el.alt;});"
Page.ClientScript.RegisterStartupScript(this.GetType(), "SetEditButtonTitle", strScript, true);
}
当然,您可能需要将javascript添加到网格中。此脚本会将所有input
代码的title属性设置为type=image
。
答案 2 :(得分:0)
我没有尝试Sekaran
和Show
建议的解决方案,并采取了一些不同的方法,因为我不愿意依赖JavaScript
;认为值得分享。
在他的解决方案中提到的Show,编辑按钮的EditText
属性将呈现为图像的 alt
属性;这意味着它也应该存储为.NET对应的 AlternateText
。
就我而言;我的Edit
中有Update
,Delete
,Cancel
和CommandField
按钮,我想对所有按钮执行相同操作。
因此(本地化)文本位于按钮的AlternateText
属性中;我循环遍历每个按钮并将此值放在ToolTip
属性中。
这是我的代码。
protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
foreach (Control ctrl in e.Row.Cells[2].Controls)
{
if (ctrl.GetType().BaseType == typeof(ImageButton))
((ImageButton)ctrl).ToolTip = ((ImageButton)ctrl).AlternateText;
}
}
}
我的代码中有硬编码的Cell Id“2”,因为它众所周知。
每个图像按钮控件都是System.Web.UI.WebControls.DataControlImageButton
类型,无法访问。因此我使用了它的BaseType,它应该是ImageButton
答案 3 :(得分:0)
@show的答案的RegisterStartupScript部分不需要在RowDataBound期间运行。它将在网格数据绑定过程中为每一行运行完全相同的操作。您可以将这两行放在该页面的OnPreRender事件中,其效果相同,但仅在服务器上执行代码期间发生一次。