Hi guys, i'm new with this topic and i need your help.
I know how to edit info inside a grid (now i'm using popup mode) and it works. But my boss asked me to change a field (logo picture converted into base64 string ) and i needed to use the radupload control inside the grid.
I've added it manually and it appears without problems but i don't know how to get this file to convert it into base64 string... could you help me with this? thanks a lot!
This is the code i'm using into the grid
And this one is part of the codebehind
I know how to edit info inside a grid (now i'm using popup mode) and it works. But my boss asked me to change a field (logo picture converted into base64 string ) and i needed to use the radupload control inside the grid.
I've added it manually and it appears without problems but i don't know how to get this file to convert it into base64 string... could you help me with this? thanks a lot!
This is the code i'm using into the grid
<
telerik:GridAttachmentColumn
FileName
=
"NuevoLogoFN"
FilterControlAltText
=
"Filter Nuevo Logo column"
HeaderText
=
"Nuevo Logotipo"
Text
=
"Nuevo Logotipo"
UniqueName
=
"NuevoLogo"
>
</
telerik:GridAttachmentColumn
>
And this one is part of the codebehind
if
(e.CommandName == RadGrid.UpdateCommandName)
{
//GridDataItem item = (GridDataItem)e.Item;
GridEditFormItem item = (GridEditFormItem)e.Item;
Hashtable newValues =
new
Hashtable();
item.ExtractValues(newValues);
//I need the code here
string
id = item.OwnerTableView.DataKeyValues[e.Item.ItemIndex][
"ID_Reg"
].ToString();
6 Answers, 1 is accepted
0
Accepted
Hi Arturo,
To achieve the desired functionality you could try using the following code snippet:
Please give it try and let me know if it helps you.
Kind regards,
Radoslav
the Telerik team
To achieve the desired functionality you could try using the following code snippet:
void
RadGrid1_UpdateCommand(
object
sender, GridCommandEventArgs e)
{
...
UploadedFile uploadedFile = ((e.Item
as
GridEditFormItem)[
"NuevoLogo"
].Controls[0]
as
RadUpload).UploadedFiles[0];
byte
[] bytes =
new
byte
[uploadedFile.InputStream.Length];
int
numBytesToRead = (
int
)uploadedFile.InputStream.Length;
int
numBytesRead = 0;
while
(numBytesToRead > 0)
{
int
n = uploadedFile.InputStream.Read(bytes, numBytesRead, 10);
if
(n == 0)
{
break
;
}
numBytesRead += n;
numBytesToRead -= n;
}
uploadedFile.InputStream.Close();
string
base64String = Convert.ToBase64String(bytes);
}
Please give it try and let me know if it helps you.
Kind regards,
Radoslav
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
0
Arturo
Top achievements
Rank 1
answered on 11 Sep 2012, 04:07 PM
It's excellent! thanks a lot! but now i have another question related to this topic.... how can i detect that this new control (uploadedFile) has a file? this because i wanna validate if the user wants to change the logo o wants to keep the old one. thanks!
0
Casey
Top achievements
Rank 1
answered on 11 Sep 2012, 04:32 PM
Hi Arturo,
You could modify the solution provided by Radoslav as follows:
I hope this helps!
Casey
You could modify the solution provided by Radoslav as follows:
I hope this helps!
Casey
RadUpload uploader = (e.Item
as
GridEditFormItem)[
"NuevoLogo"
].Controls[0]
as
RadUpload;
if
(uploader.UploadedFiles.Count > 0)
{
UploadedFile uploadedFile = uploader.UploadedFiles[0];
byte
[] bytes =
new
byte
[uploadedFile.InputStream.Length];
int
numBytesToRead = (
int
)uploadedFile.InputStream.Length;
int
numBytesRead = 0;
while
(numBytesToRead > 0)
{
int
n = uploadedFile.InputStream.Read(bytes, numBytesRead, 10);
if
(n == 0)
{
break
;
}
numBytesRead += n;
numBytesToRead -= n;
}
uploadedFile.InputStream.Close();
string
base64String = Convert.ToBase64String(bytes);
}
0
Arturo
Top achievements
Rank 1
answered on 11 Sep 2012, 04:45 PM
Thanks for the soon response, it won't worked but if I use
it's the way i need to use this control. Thanks a lot!
[UPDATE]
I forgot something important.... is there anyway to show this encoded image in the radgrid???
if
( ((e.Item
as
GridEditFormItem)[
"NuevoLogo"
].Controls[0]
as
RadUpload).UploadedFiles.Count > 0)
{
.....
}
it's the way i need to use this control. Thanks a lot!
[UPDATE]
I forgot something important.... is there anyway to show this encoded image in the radgrid???
0
Hello Arturo,
You could convert the image from base64 string to byte array and use the GridTemplateColumn with RadBinaryImage or GridBinaryImageColumn. I am sending you a simple example which demonstrates the described approach.
I hope this helps.
Greetings,
Radoslav
the Telerik team
You could convert the image from base64 string to byte array and use the GridTemplateColumn with RadBinaryImage or GridBinaryImageColumn. I am sending you a simple example which demonstrates the described approach.
I hope this helps.
Greetings,
Radoslav
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
0
Arturo
Top achievements
Rank 1
answered on 13 Sep 2012, 04:11 PM
I'm pretty confused...how can i do it if i charge the radgrid without codebehind??