Hello-
I have been trying to use the following example to help me build some new functions into my app but have been running into some issues.
http://demos.telerik.com/aspnet-ajax/controls/examples/integration/raduploadinajaxifiedgrid/defaultcs.aspx?product=upload
Are there any new demos/examples showing how to integrate the Upload control with a RadGrid that is bound to either a LinqDatasource or an EFDatasource?
My app continues to blow "Object of type 'System.Byte[]' cannot be converted to type 'System.Data.Linq.Binary'" but all fields/mappings look correct.
Thanks
MJD
I have been trying to use the following example to help me build some new functions into my app but have been running into some issues.
http://demos.telerik.com/aspnet-ajax/controls/examples/integration/raduploadinajaxifiedgrid/defaultcs.aspx?product=upload
Are there any new demos/examples showing how to integrate the Upload control with a RadGrid that is bound to either a LinqDatasource or an EFDatasource?
My app continues to blow "Object of type 'System.Byte[]' cannot be converted to type 'System.Data.Linq.Binary'" but all fields/mappings look correct.
Thanks
MJD
7 Answers, 1 is accepted
0
Hector
Top achievements
Rank 1
answered on 30 Oct 2009, 03:56 PM
Hello,
I am having the exact same issue. I used the code from the samples. I have a GridView displaying a table in SQL Server with an Image type column. When I try to insert or update a column and select the image to insert, I get the error:
Object of type 'System.Byte[]' cannot be converted to type 'System.Data.Linq.Binary'.
I am using a LinqToSql data source. Here is my code:
and the code behind:
I took this straight out of the samples. Any help is greatly appreciated.
I am having the exact same issue. I used the code from the samples. I have a GridView displaying a table in SQL Server with an Image type column. When I try to insert or update a column and select the image to insert, I get the error:
Object of type 'System.Byte[]' cannot be converted to type 'System.Data.Linq.Binary'.
I am using a LinqToSql data source. Here is my code:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ImageUpload.aspx.cs" Inherits="ImageUpload" %> |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head runat="server"> |
<title></title> |
</head> |
<body> |
<form id="form1" runat="server"> |
<telerik:RadScriptManager ID="RadScriptManager1" Runat="server"> |
</telerik:RadScriptManager> |
<telerik:RadScriptBlock ID="RadScriptBlock1" runat="server"> |
</telerik:RadScriptBlock> |
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> |
<script type="text/javascript"> |
// <![CDATA[ |
//On insert and update buttons click temporarily disables ajax to perform upload actions |
function conditionalPostback(sender, eventArgs) { |
var theRegexp = new RegExp("\.UpdateButton$|\.PerformInsertButton$", "ig"); |
if (eventArgs.get_eventTarget().match(theRegexp)) { |
var upload = $find(window['UploadId']); |
//AJAX is disabled only if file is selected for upload |
if (upload.getFileInputs()[0].value != "") { |
eventArgs.set_enableAjax(false); |
} |
} |
} |
function validateRadUpload(source, e) { |
e.IsValid = false; |
var upload = $find(source.parentNode.getElementsByTagName('div')[0].id); |
var inputs = upload.getFileInputs(); |
for (var i = 0; i < inputs.length; i++) { |
//check for empty string or invalid extension |
if (inputs[i].value != "" && upload.isExtensionValid(inputs[i].value)) { |
e.IsValid = true; |
break; |
} |
} |
} |
// ]]> |
</script> |
</telerik:RadCodeBlock> |
<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" Height="200px" Width="300px"> |
<telerik:RadProgressManager ID="RadProgressManager1" runat="server" /> |
<telerik:RadProgressArea ID="RadProgressArea1" runat="server"> |
</telerik:RadProgressArea> |
</telerik:RadAjaxPanel> |
<br /> |
<telerik:RadGrid ID="RadGrid1" runat="server" DataSourceID="LinqDataSource1" GridLines="None" |
AllowAutomaticInserts="true" |
AllowAutomaticUpdates="true" AllowAutomaticDeletes="true" ShowStatusBar="True" |
OnItemDataBound="RadGrid1_ItemDataBound" OnItemCreated="RadGrid1_ItemCreated"> |
<MasterTableView AutoGenerateColumns="False" DataKeyNames="ShopID" DataSourceID="LinqDataSource1"> |
<RowIndicatorColumn> |
<HeaderStyle Width="20px"></HeaderStyle> |
</RowIndicatorColumn> |
<ExpandCollapseColumn> |
<HeaderStyle Width="20px"></HeaderStyle> |
</ExpandCollapseColumn> |
<Columns> |
<telerik:GridEditCommandColumn ButtonType="ImageButton"> |
<HeaderStyle Width="3%" /> |
</telerik:GridEditCommandColumn> |
<telerik:GridBoundColumn DataField="ShopID" DataType="System.Int32" HeaderText="ShopID" |
ReadOnly="True" SortExpression="ShopID" UniqueName="ShopID"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="Name" HeaderText="Name" SortExpression="Name" |
UniqueName="Name"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="Phone" HeaderText="Phone" SortExpression="Phone" |
UniqueName="Phone"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="Address" HeaderText="Address" SortExpression="Address" |
UniqueName="Address"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="City" HeaderText="City" SortExpression="City" |
UniqueName="City"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="State" HeaderText="State" SortExpression="State" |
UniqueName="State"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="ZIP" DataType="System.Decimal" HeaderText="ZIP" |
SortExpression="ZIP" UniqueName="ZIP"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="Description" HeaderText="Description" SortExpression="Description" |
UniqueName="Description"> |
</telerik:GridBoundColumn> |
<telerik:GridBinaryImageColumn DataField="Image" HeaderText="Image" UniqueName="Image" ImageAlign="NotSet" |
ImageHeight="80px" ImageWidth="80px" ResizeMode="Fit" DataAlternateTextField="Description" |
DataAlternateTextFormatString="Image of {0}"> |
<HeaderStyle Width="10%" /> |
</telerik:GridBinaryImageColumn> |
<telerik:GridButtonColumn Text="Delete" CommandName="Delete" ButtonType="ImageButton"> |
<HeaderStyle Width="2%" /> |
</telerik:GridButtonColumn> |
</Columns> |
</MasterTableView> |
</telerik:RadGrid> |
<asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="DataClassesDataContext" |
EnableDelete="True" EnableInsert="True" EnableUpdate="True" TableName="Shops"> |
</asp:LinqDataSource> |
<div> |
</div> |
</form> |
</body> |
</html> |
and the code behind:
using System; |
using System.Collections.Generic; |
using System.Linq; |
using System.Web; |
using System.Web.UI; |
using System.Web.UI.WebControls; |
using Telerik.Web.UI; |
public partial class ImageUpload : System.Web.UI.Page |
{ |
protected void Page_Load(object sender, EventArgs e) |
{ |
} |
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) |
{ |
if (e.Item is GridEditableItem && e.Item.IsInEditMode) |
{ |
GridBinaryImageColumnEditor editor = ((GridEditableItem)e.Item).EditManager.GetColumnEditor("Image") as GridBinaryImageColumnEditor; |
RadAjaxPanel1.ResponseScripts.Add(string.Format("window['UploadId'] = '{0}';", editor.RadUploadControl.ClientID)); |
} |
} |
protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e) |
{ |
if (e.Item is GridEditableItem && e.Item.IsInEditMode) |
{ |
GridBinaryImageColumnEditor editor = ((GridEditableItem)e.Item).EditManager.GetColumnEditor("Image") as GridBinaryImageColumnEditor; |
TableCell cell = (TableCell)editor.RadUploadControl.Parent; |
CustomValidator validator = new CustomValidator(); |
validator.ErrorMessage = "Please select file to be uploaded"; |
validator.ClientValidationFunction = "validateRadUpload"; |
validator.Display = ValidatorDisplay.Dynamic; |
cell.Controls.Add(validator); |
} |
} |
} |
I took this straight out of the samples. Any help is greatly appreciated.
0
Michael
Top achievements
Rank 1
answered on 30 Oct 2009, 08:14 PM
I was having the exact same problem. I went into me dbml file and switched my Image field from a Linq.Binary to a System.Byte[] and all is well now.
0
Hector
Top achievements
Rank 1
answered on 30 Oct 2009, 11:26 PM
Thank you, Michael, it worked just like you said.
Much obliged!
-Hector
Much obliged!
-Hector
0
ephillipe
Top achievements
Rank 2
answered on 31 Oct 2009, 10:45 AM
I have same problem, but:
I use LinqToEntities and do not can change the type. 0
Hector
Top achievements
Rank 1
answered on 31 Oct 2009, 12:22 PM
EPhillipe, I tried that out on too and it works fine I already have a lot of coding usinig the LinqToSQL datacontext that it would be more work to re-structure my code to use the L2E model. But I am glad you pointed me to this because it is more powerful and flexible. I will be using D2E more Thanks.
0
Hi guys,
Byte[] does not map directly to System.Linq.Binary. In order to get a Binary object from a Byte[] one you need to call the Binary constructor. Example:
You can also take a look at this code library which demonstrates how to save files to a database using LINQ2SQL.
Kind regards,
Genady Sergeev
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
Byte[] does not map directly to System.Linq.Binary. In order to get a Binary object from a Byte[] one you need to call the Binary constructor. Example:
Byte[] byteArray =
new
Byte[uploadedFile.ContentLength];
uploadedFile.InputStream.Read(byteArray, 0, uploadedFile.ContentLength);
System.Linq.Binary file =
new
System.Linq.Binary(byteArray);
You can also take a look at this code library which demonstrates how to save files to a database using LINQ2SQL.
Kind regards,
Genady Sergeev
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
0
ephillipe
Top achievements
Rank 2
answered on 02 Nov 2009, 10:42 AM
Hi All,
I use Entity Framework with RadGrid. I use NeedDataSource event for fill Grid.
The problem is: Entity Framework maps Binary fields in database with Binary property in a model. I can't change this. And because this, I don't can use GridBinaryImageColumn.
Any suggestions?
Thanks.