2

我必须为我的 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 命令字段按钮类型中添加工具提示作为图像?

4

4 回答 4

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 = "&nbsp;";
                                ((System.Web.UI.WebControls.ImageButton)(e.Row.Cells[4].Controls[2])).ToolTip = "Close Resource Details";
                            }
                            i++;
                        }
                    }
                }
            }
            catch (Exception _e)
            {
            }
        }
于 2013-04-16T12:43:19.303 回答
0

或者你可以

  1. 定义 gridview 命令字段的 EditText 属性(如您所做的那样),它将呈现为标记 alt的属性:<input type='image' alt='Edit' /><asp:CommandField ButtonType="Image" EditText="Edit" etc />

  2. 然后添加一个脚本标记以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标签的标题属性type=image

于 2014-12-16T12:53:54.827 回答
0

我没有尝试Sekaranand提出的解决方案,而是Show采取了一些不同的方法,因为我不愿意依赖JavaScript;认为这可能值得分享。

A Show 在他的解决方案中提到EditText,Edit 按钮的属性将呈现为alt图像的属性;这意味着它也应该存储为AlternateText.NET 对应的版本。就我而言;我有Edit,和按钮,Update我想对所有按钮做同样的事情。DeleteCancelCommandField

所以(本地化的)文本是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

于 2016-01-28T23:24:29.763 回答
0

@show 答案的 RegisterStartupScript 部分不需要在 RowDataBound 期间运行。在网格数据绑定过程中,它将为每一行运行完全相同的事情。您可以将这两行放入页面的 OnPreRender 事件中,它会产生相同的效果,但只会在服务器上的代码执行期间发生一次。

于 2019-02-14T22:40:00.740 回答