我正在尝试从数据库动态创建和加载radgrid。如何使用templatecolumn动态加载图像?
我正在使用数据表绑定数据
提前致谢
答案 0 :(得分:0)
在GridTemplatedColumn中,添加RadBinaryImage。
function news_details($id, $slug){
print_r("News Id : ". $id);
print_r("<br>");
print_r("News Slug : ".$slug);
}
此处使用了一个小技巧,将ImageUrl设置为默认图像在设置DataValue之前,仅当DataValue为NULL时才显示默认图像
在您的DBML中,您必须将MyPhoto字段更改为<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) %>' />
单击您的Dbml,单击该字段。属性并使用“类型”下拉列表选择良好类型。
答案 1 :(得分:0)
我成功地动态完成了。这就是代码。
创建列时,我将其创建为具有唯一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);