0

我有一个要在代码中填充的 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;
        }

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

预习

4

1 回答 1

1

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

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

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

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

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

于 2013-09-30T14:34:16.713 回答