如何将Commandfield ButtonType的工具提示添加为图像

时间:2013-04-16 11:19:39

标签: asp.net css

我必须为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 个答案:

答案 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 = "&nbsp;";
                                ((System.Web.UI.WebControls.ImageButton)(e.Row.Cells[4].Controls[2])).ToolTip = "Close Resource Details";
                            }
                            i++;
                        }
                    }
                }
            }
            catch (Exception _e)
            {
            }
        }

答案 1 :(得分:0)

或者你可以

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

  2. 然后使用以下代码添加脚本标记以设置title属性:

  3. 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)

我没有尝试SekaranShow建议的解决方案,并采取了一些不同的方法,因为我不愿意依赖JavaScript;认为值得分享。

在他的解决方案中提到的Show,编辑按钮的EditText属性将呈现为图像的 alt 属性;这意味着它也应该存储为.NET对应的 AlternateText 。 就我而言;我的Edit中有UpdateDeleteCancelCommandField按钮,我想对所有按钮执行相同操作。

因此(本地化)文本位于按钮的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事件中,其效果相同,但仅在服务器上执行代码期间发生一次。