2

グリッドビューの画像編集ボタンにツールチップを追加する必要があります。コマンドフィールドとしてコーディングしました。

<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>

グリッドビュー コマンドフィールド ボタン タイプにツールチップを画像として追加することは可能ですか?

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

Sekaranandによって提案された解決策は試しませんでしたShowが、依存するつもりがなかったので、少し異なるアプローチを取りましたJavaScript。共有する価値があるかもしれないと思いました。

ショーは、彼のソリューションでEditText、編集ボタンのプロパティがalt画像の属性としてレンダリングされると述べています。AlternateTextこれは、.NET の対応物としても保存する必要があることを意味します。私の場合; EditUpdateDeleteおよび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"をハードコーディングしました。すべてのImage Buttonコントロールは、System.Web.UI.WebControls.DataControlImageButtonアクセスできないタイプです。したがって、私はそれが BaseType であるべきであることを使用していましたImageButton

于 2016-01-28T23:24:29.763 に答える
0

またはあなたができる

  1. タグ altの属性としてレンダリングされる、グリッドビューのコマンドフィールドの EditText プロパティを定義します (行ったように) 。<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 に答える