数据源中的位图未显示在asp .net Gridview中

时间:2013-09-30 14:30:06

标签: asp.net gridview bitmap

我有一个DataTable我在代码中填充,我将其添加到DataSet中,然后用于填充GridView。 除了我刚刚添加的位图列之外,这个工作正常;而且我看不出自己错过了什么。我的猜测是我完全错了,因为这是我第一次涉足网站代码:)

这是网格的页面代码 - 您可以看到我没有指定单独的列,它们只是从DataSet自动生成。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:ScriptManager ID="ScriptManager1" runat="server">
                </asp:ScriptManager>
                <asp:GridView ID="gridTicketsByGroup" runat="server" CaptionAlign="Left" CellPadding="4" DataSourceID="TicketsByGroupDatasource" Font-Size="Medium" ForeColor="#333333" GridLines="None" Font-Names="Verdana">
                    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                    <EditRowStyle BackColor="#999999" />
                    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" Font-Size="Medium" HorizontalAlign="Left" />
                    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                    <SortedAscendingCellStyle BackColor="#E9E7E2" />
                    <SortedAscendingHeaderStyle BackColor="#506C8C" />
                    <SortedDescendingCellStyle BackColor="#FFFDF8" />
                    <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
                </asp:GridView>
                <asp:ObjectDataSource ID="TicketsByGroupDatasource" runat="server" SelectMethod="ShowTicketsByGroupReport" TypeName="PhoneMonitor.GroupReport"></asp:ObjectDataSource>
                <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick">
                </asp:Timer>
            </ContentTemplate>
        </asp:UpdatePanel>

我刚刚返回的select方法返回包含DataTable的DataSet:

returnedDataSet.Tables.Add(dataRetriever.TicketsByGroupTable);
return returnedDataSet;

为了测试,到目前为止我添加了一个位图。尽管如此,整个专栏根本没有显示。列添加如下:

TicketsByGroupTable.Columns.Add("Logo", typeof(Bitmap));
row[0] = LoadIcon(rowName);

 private Bitmap LoadIcon(string ProductName)
        {
            string fileName = "";
            switch (ProductName)
            {
                case "Test":
                    fileName = "PhoneMonitor.Icons.Test.png";
                    break;
            }
            if (fileName != "")
            {
                System.Reflection.Assembly thisAss = System.Reflection.Assembly.GetExecutingAssembly();
                Bitmap b = new Bitmap(thisAss.GetManifestResourceStream(fileName));
                return b;
            }
            else return null;
        }

如果我预览表,看起来它已加载好了:

Preview

1 个答案:

答案 0 :(得分:1)

我认为gridview不支持autogeneratecolumns的位图。另外,我很确定图像没有存储在您的徽标列中。它看起来只是存储类型。

一种解决方案是存储图像或URL的base64表示,然后手动绑定列。

编辑来自此链接(http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.autogeneratecolumns.aspx):

  

而不是让GridView控件自动生成   列字段,您可以通过设置手动定义列字段   AutoGenerateColumns属性为false,然后创建自定义   列集合。除了绑定列字段,您还可以   显示按钮列字段,复选框列字段,命令   字段,超链接列字段,图像字段或列字段   基于您自己定制的模板

可能的解决方案:https://stackoverflow.com/a/7983647/375304