我有以下ASP.NET:
<Columns>
<telerik:GridClientSelectColumn UniqueName="GridClientSelectColumn1" />
<telerik:GridBinaryImageColumn UniqueName="BinaryImageColumn" />
<telerik:GridBoundColumn DataField="PRODUCT_NAME" SortExpression="PRODUCT_NAME" HeaderText="<%$ Resources:Strings, ProductName %>" HeaderButtonType="TextButton" />
<telerik:GridBoundColumn DataField="STORE_NAME" SortExpression="STORE_NAME" HeaderText="<%$ Resources:Strings, Supplier %>" HeaderButtonType="TextButton" />
<telerik:GridBoundColumn DataField="PRODUCT_PRICE" SortExpression="PRODUCT_PRICE" HeaderText="<%$ Resources:Strings, UnitPrice %>" HeaderButtonType="TextButton" />
<telerik:GridBoundColumn DataField="PRODUCT_QUANTITY" SortExpression="PRODUCT_QUANTITY" HeaderText="<%$ Resources:Strings, Quantity %>" HeaderButtonType="TextButton" />
<telerik:GridBoundColumn DataField="TRANS_TOTAL" SortExpression="TRANS_TOTAL" HeaderText="<%$ Resources:Strings, TotalPrice %>" HeaderButtonType="TextButton" />
</Columns>
&#13;
代码背后:
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) {
SQLHelper a = new SQLHelper(SQLHelper.ConnectionStrings.KernelConnectionString);
DataTable newdt = DataHelper.GetProductAdditionalObjects(11);
for (int i = 0; i < newdt.Rows.Count; i++) {
if (int.Parse(newdt.Rows[i]["PROD_OBJECT_SPECS_ID"].ToString()) == 1) {
byte[] img = Converter.ObjectToByteArray(newdt.Rows[i]["OBJECT_BINARIES"]); //Convert Object to Byte Array
}
}
GridDataItem item = e.Item as GridDataItem;
if (item != null) {
(item["BinaryImageColumn"].Controls[0] as RadBinaryImage).DataValue = img;
}
}
&#13;
问题是它给了我一个错误: 名字&#39; img&#39;在当前上下文中不存在,尽管它是我想在这种情况下使用的字节数组
答案 0 :(得分:2)
图像字节数组可以在RadGrid的ItemDataBound
事件中处理。
<Columns>
<telerik:GridBinaryImageColumn UniqueName="BinaryImageColumn" />
<telerik:GridBoundColumn DataField="PRODUCT_NAME" SortExpression="PRODUCT_NAME" HeaderText="<%$ Resources:Strings, ProductName %>" HeaderButtonType="TextButton" />
</Columns>
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
GridDataItem item = e.Item as GridDataItem;
if(item != null)
{
(item["BinaryImageColumn"].Controls[0] as RadBinaryImage).DataValue = yourImgByteArray;
}
}
GridBinaryImageColumn 中的每个单元格都包含从a流式传输的图像 二进制图像源字段(通过 DataField 属性指定 专栏)。使用时,此列将显示 RadBinaryImage 控件 在视图模式下, RadUpload 或 RadAsyncUpload 在编辑模式下上传 图片。上传类型由 UploadControlType 决定 属性。此外,您可以在项目时保留二进制数据 通过将 PersistBinaryDataOnEdit 属性设置为打开以进行编辑 的真即可。这将强制控件将旧的二进制图像传递给 数据源,因此可以保留而不是删除。
可在以下链接中找到更多详细信息。
答案 1 :(得分:1)
我不知道我的回答对你有帮助。 Fist RadGridview列添加(图像或文本等)。
RadGridView1.Rows.AddNew();
RadGridView1.Rows[RadGridView1.Rows.Count - 1].Cells["Data1"].Value = byteArrayToImage(your Byte Array)
//My First Column(Data1) is ImageColumn.
public Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}