Как установить источник изображения BinaryImageColumnin RadGrid из массива byte [] в C #?

592 просмотра

2 ответа

35 Репутация автора

У меня есть следующий 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>

Код позади:

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;
  }
}

Проблема в том, что это дает мне ошибку: имя 'img' не существует в текущем контексте, хотя это байтовый массив, который я хочу использовать в этом случае

Автор: ytba92 Источник Размещён: 18.07.2016 07:32

Ответы (2)


1 плюс

77 Репутация автора

Я не знаю, поможет ли вам мой ответ. Кулак 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;
}
Автор: Mr.MK Размещён: 18.07.2016 08:44

2 плюса

4198 Репутация автора

Решение

Массив байтов изображения может быть обработан в событии 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 содержит изображение, передаваемое в потоковом режиме из поля источника двоичного изображения (указанного через свойство столбца DataField ). При использовании в этом столбце будет отображаться элемент управления RadBinaryImage в режиме просмотра и RadUpload или RadAsyncUpload в режиме редактирования для загрузки изображения. Тип загрузки определяется свойством UploadControlType . Кроме того, вы можете сохранить двоичные данные, когда элемент открыт для редактирования, установив для свойства PersistBinaryDataOnEdit значение true . Это заставит элемент управления передать старое двоичное изображение в источник данных, чтобы его можно было сохранить и не удалять.

Более подробную информацию можно найти по следующей ссылке.

http://docs.telerik.com/devtools/aspnet-ajax/controls/grid/columns/column-types#gridbinaryimagecolumn

Автор: woodykiddy Размещён: 18.07.2016 09:28
Вопросы из категории :
32x32