【问题标题】:c# Load image in Radgrid dynamically from databasec#从数据库动态加载Radgrid中的图像
【发布时间】:2016-12-16 07:58:33
【问题描述】:

我正在尝试从数据库动态创建和加载 radgrid。如何使用模板列动态加载图像?

我正在使用数据表来绑定数据

提前致谢

【问题讨论】:

  • 来自数据库,你的意思是 Dbml 和 linQ 还是手工查询?
  • 我正在使用 linq
  • 给我 5 分钟的时间来写一篇完整的文章。但简短的回答是 RadBinaryImage 你可以在我写这个的时候阅读文档。

标签: c# telerik


【解决方案1】:

在 Rad 网格中添加 RadBinaryImage

在您的 GridTemplatedColumn 中,添加一个 RadBinaryImage。

<telerik:GridTemplateColumn SortExpression="MyField" DataField="MyField">
        <ItemTemplate>
            <telerik:RadBinaryImage runat="server" ID="RIB_dsds"
                            ImageUrl="~/Site/Images/kiterror.png"
                            DataValue='<%# ((Type)Container.DataItem).MyPhoto %>'
                            AutoAdjustImageControlSize="false"
                            Width="60px" Height="60px"
                            ToolTip='<%# string.Format("Photo of {0}",((Type)Container.DataItem).PhotoLabel) %>'
                            AlternateText='<%# string.Format("Photo of {0}",((Type)Container.DataItem).CPS_PhotoLabel) %>' />

这里使用了一个小技巧,在设置 DataValue 之前将 ImageUrl 设置为默认图像,只有在 DataValue 为 NULL 时才会显示默认图像

在您的 DBML 中,您必须将字段 MyPhoto 更改为 Byte() ( System.Byte[])
单击您的 Dbml,单击该字段。属性并使用类型下拉列表选择好的类型。

编辑:因为你的问题是关于这样做programmaticaly

【讨论】:

  • 谢谢 Pierre,... 但正如我所说,我只在服务器端创建网格,我正在为不同的报告创建通用网格。所以列不固定。
  • 嗯,我有点困惑。以编程方式创建模板列是一种痛苦。因为要使 Templated 中的控件持久化,您至少必须在 Page_init 中。
  • 我有一个问题:同一页?不同的报告但相同的数据?我的意思是数据中有很多列,但报告中只有少数列。我正在尝试了解您想查看的内容,如果这可以通过更简单的方式实现。就像在您的页面中设置多个网格并在页面加载中隐藏 n 显示想要的。
  • 我已经更新了有关以编程方式创建模板列的文档。这对我来说总是很痛苦。那么为什么需要以编程方式创建的 Grid。我很确定我可以在你的情况下找到解决方法。
  • 我没有使用多个网格集的原因是我想创建一个通用网格,以便将来更改列可以轻松适应。
【解决方案2】:

我设法动态地做到了。这是代码。

在创建列时,我将其创建为具有唯一 ID 的模板列 GridTemplateColumn templateColumn = new GridTemplateColumn(); grid.MasterTableView.Columns.Add(templateColumn); templateColumn.DataField = <Column Name from DB>; templateColumn.HeaderText = <Column Name from DB>; templateColumn.ItemTemplate = new MyTemplate(<Column Name from DB>); columnList.Add(<Column Name from DB>);//add column to grid dt.Columns.Add(<Column Name from DB>);//add column to datatable

private class MyTemplate : ITemplate { protected System.Web.UI.WebControls.Image pic; private string colname; public MyTemplate(string cName) { colname = cName; } public void InstantiateIn(System.Web.UI.Control container) { pic = new System.Web.UI.WebControls.Image(); pic.ID = "img_" + colname;\\create an Id for the column(colname is same as DB value for column) container.Controls.Add(pic); } }

在从数据库加载图像时

System.Web.UI.WebControls.Image pic = new System.Web.UI.WebControls.Image(); pic = (System.Web.UI.WebControls.Image)item.FindControl("img_" + <Column Name from DB>)\\access by Id created for column; pic.ImageUrl = string.Format("data:image/png;base64,{0}", imageString);

【讨论】:

    猜你喜欢
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    相关资源
    最近更新 更多