0

AutoGenerateColumnsモードで GridView に画像を表示することは可能ですか? 私はこれを試しました

    private void LoadEventLog(string servicesName)
    {
        var bmp = new Bitmap(32, 32);
        using (var g = Graphics.FromImage(bmp))
        {
            g.Clear(Color.Purple);
        }
        var logs = ServiceHelper.GetEventLogs(servicesName)
            .Select(x => new {x.MachineName, x.TimeGenerated, Category = GetCategory(x.Category), x.Message, Img=bmp })
            .Take(100)
            .ToArray(); //
        ServicesGrid.DataSource = logs;
        ServicesGrid.DataBind();
    }

aspx:

<asp:GridView ID="ServicesGrid" OnRowDataBound="ServicesGrid_OnItemDataBound" 
     OnPageIndexChanging="ServicesGrid_OnPageIndexChanging"
     AutoGenerateColumns="true" runat="server" AllowPaging="True" />

しかし、うまくいきません。

4

1 に答える 1

1

グリッドビューが自動生成列のビットマップをサポートしているとは思わない。さらに、画像がロゴ列に保存されていないことは確かです。タイプを格納するだけのようです。

1 つの解決策は、画像または URL の base64 表現を保存してから、列を手動でバインドすることです。

このリンクから ( http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.autogeneratecolumns.aspx ):

GridView コントロールで列フィールドを自動的に生成する代わりに、AutoGenerateColumns プロパティを false に設定してカスタム Columns コレクションを作成することにより、列フィールドを手動で定義できます。バインドされた列フィールドに加えて、ボタン列フィールド、チェック ボックス列フィールド、コマンド フィールド、ハイパーリンク列フィールド、画像フィールド、または 独自のカスタム定義テンプレートに基づく列フィールドを表示することもできます

考えられる解決策: https://stackoverflow.com/a/7983647/375304

于 2013-09-30T14:39:09.047 に答える