c#从数据库动态加载Radgrid中的图像
c# Load image in Radgrid dynamically from database
我正在尝试从 database.How 动态创建和加载 radgrid 我可以使用 templatecolumn 动态加载图像吗?
我正在使用数据表绑定数据
提前致谢
在 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) %>' />
这里使用了一个小技巧,将 ImageUrl 设置为默认图像在设置 DataValue 之前使默认图像仅在 DataValue 为 NULL 时出现
在您的 DBML 中,您必须将字段 MyPhoto 更改为 Byte() ( System.Byte[])
。
点击你的Dbml,点击字段。属性并使用类型下拉列表 select 好的类型。
编辑:因为你的问题是关于如何做的programmaticaly。
我成功了dynamically.Here是代码。
在创建列时,我将其创建为具有唯一 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);
我正在尝试从 database.How 动态创建和加载 radgrid 我可以使用 templatecolumn 动态加载图像吗?
我正在使用数据表绑定数据
提前致谢
在 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) %>' />
这里使用了一个小技巧,将 ImageUrl 设置为默认图像在设置 DataValue 之前使默认图像仅在 DataValue 为 NULL 时出现
在您的 DBML 中,您必须将字段 MyPhoto 更改为 Byte() ( System.Byte[])
。
点击你的Dbml,点击字段。属性并使用类型下拉列表 select 好的类型。
编辑:因为你的问题是关于如何做的programmaticaly。
我成功了dynamically.Here是代码。
在创建列时,我将其创建为具有唯一 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);