This is a migrated thread and some comments may be shown as answers.

[Solved] BinaryImage problems on Insert

1 Answer 150 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Wayne Acton
Top achievements
Rank 1
Wayne Acton asked on 12 Nov 2009, 01:50 PM
Hi,

I'm having some trouble with the BinaryImage control.

My problem is, I'm not using automatic insert & update, because there are other validations I need to do when a insert or update is done.
My update and select works fine, my problem comes in when I try insert.

I get the following error before my InsertCommand fires when I click on Add new:

"Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: The provided binary data may not be valid image or may contains unknown header."

Now I assume this happens because when the insert event fires, there's nothing to actually bind to for the editform.

I had a similar problem with some checkboxes so I added the following code for them in the ItemCommand event:

            if (e.CommandName == RadGrid.InitInsertCommandName) 
            { 
                e.Canceled = true
                System.Collections.Specialized.ListDictionary newValues = new System.Collections.Specialized.ListDictionary(); 
                newValues["SendSMS"] = true
                newValues["IsBuyer"] = false
                //Insert the item and rebind 
                e.Item.OwnerTableView.InsertItem(newValues); 
            } 


I tried something similar for the BinaryImage control with no luck.

Here is my grid:

                <telerik:RadGrid ID="radgSiloPersons" runat="server" AllowAutomaticDeletes="True" 
                    AllowAutomaticInserts="False" AllowAutomaticUpdates="False" AllowFilteringByColumn="True" 
                    AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="sqlDSPersons" 
                    EnableAJAX="True" GridLines="Horizontal" ShowGroupPanel="True" Skin="WebBlue" 
                    OnItemCommand="radgSiloPersons_ItemCommand" OnItemDeleted="radgSiloPersons_ItemDeleted" 
                    OnItemInserted="radgSiloPersons_ItemInserted" OnItemUpdated="radgSiloPersons_ItemUpdated" 
                    OnUpdateCommand="radgSiloPersons_UpdateCommand" OnInsertCommand="radgSiloPersons_InsertCommand" 
                    OnItemDataBound="radgSiloPersons_ItemDataBound"
                    <MasterTableView DataKeyNames="ID" DataSourceID="sqlDSPersons" CommandItemDisplay="Top" 
                        CommandItemSettings-AddNewRecordText="Add New User" EditMode="EditForms"
                        <CommandItemSettings AddNewRecordText="Add New User"></CommandItemSettings> 
                        <Columns> 
                            <telerik:GridEditCommandColumn EditText="Edit" EditImageUrl="Images/Edit.gif" ButtonType="ImageButton"
                            </telerik:GridEditCommandColumn> 
                            <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" ImageUrl="Images/Delete.gif" 
                                Text="Delete" UniqueName="Delete" ConfirmText="Are you sure you wish to delete this User?"
                            </telerik:GridButtonColumn> 
                            <telerik:GridTemplateColumn HeaderText="ID" UniqueName="ID" SortExpression="ID" Visible = "false"
                                <ItemTemplate> 
                                    <asp:Label runat="server" ID="lblID" Text='<%# Eval("ID") %>' /> 
                                </ItemTemplate> 
                            </telerik:GridTemplateColumn>                             
                            <telerik:GridTemplateColumn HeaderText="Name" UniqueName="Name" SortExpression="Name"
                                <ItemTemplate> 
                                    <asp:Label runat="server" ID="lblName" Text='<%# Eval("Name") %>' /> 
                                </ItemTemplate> 
                                <EditItemTemplate> 
                                    <telerik:RadTextBox runat="server" Width="200px" ID="txtName" Text='<%# Bind("Name") %>' /> 
                                    <asp:RequiredFieldValidator ID="rfvName" runat="server" ControlToValidate="txtName" 
                                        ErrorMessage="Please enter a name!" Display="Dynamic" SetFocusOnError="true" /> 
                                </EditItemTemplate> 
                            </telerik:GridTemplateColumn> 
                            <telerik:GridTemplateColumn HeaderText="Email" UniqueName="Email" DataField="Email"
                                <ItemTemplate> 
                                    <asp:Label ID="lblEmail" runat="server" Text='<%# Eval("Email") %>' /> 
                                </ItemTemplate> 
                                <EditItemTemplate> 
                                    <telerik:RadTextBox ID="txtEmail" Width="200px" runat="server" TextMode="SingleLine" 
                                        Text='<%# Bind("Email") %>' /> 
                                </EditItemTemplate> 
                            </telerik:GridTemplateColumn> 
                            <telerik:GridTemplateColumn HeaderText="Cell Number" UniqueName="CellNumber" SortExpression="CellNumber"
                                <ItemTemplate> 
                                    <asp:Label runat="server" ID="lblCellNumber" Text='<%# Eval("CellNumber") %>' /> 
                                </ItemTemplate> 
                                <EditItemTemplate> 
                                    <telerik:RadTextBox runat="server" Width="200px" ID="txtCellNumber" Text='<%# Bind("CellNumber") %>' /> 
                                    <asp:RequiredFieldValidator ID="rfvCellNumber" runat="server" ControlToValidate="txtCellNumber" 
                                        ErrorMessage="Please enter a Cell Number!" Display="Dynamic" SetFocusOnError="true" /> 
                                </EditItemTemplate> 
                            </telerik:GridTemplateColumn> 
                            <telerik:GridTemplateColumn HeaderText="Telephone Number" UniqueName="TelNumber" 
                                DataField="TelNumber"
                                <ItemTemplate> 
                                    <asp:Label ID="lblTelNumber" runat="server" Text='<%# Eval("TelNumber") %>' /> 
                                </ItemTemplate> 
                                <EditItemTemplate> 
                                    <telerik:RadTextBox ID="TelNumber" Width="200px" runat="server" TextMode="SingleLine" 
                                        Text='<%# Bind("TelNumber") %>' /> 
                                </EditItemTemplate> 
                            </telerik:GridTemplateColumn> 
                            <telerik:GridTemplateColumn HeaderText="Is Buyer" UniqueName="IsBuyer" DataField="IsBuyer"
                                <ItemTemplate> 
                                    <asp:Label ID="lblIsBuyer" runat="server" Text='<%# Eval("IsBuyer") %>' /> 
                                </ItemTemplate> 
                                <EditItemTemplate> 
                                    <asp:CheckBox ID="ckbIsBuyer" Checked='<%# Bind("IsBuyer") %>' runat="server" /> 
                                </EditItemTemplate> 
                            </telerik:GridTemplateColumn> 
                            <telerik:GridTemplateColumn HeaderText="Send SMS" UniqueName="SendSMS" DataField="SendSMS"
                                <ItemTemplate> 
                                    <asp:Label ID="lblSendSMS" runat="server" Text='<%# Eval("SendSMS") %>' /> 
                                </ItemTemplate> 
                                <EditItemTemplate> 
                                    <asp:CheckBox ID="ckbSendSMS" Checked='<%# Bind("SendSMS") %>' runat="server" /> 
                                </EditItemTemplate> 
                            </telerik:GridTemplateColumn> 
                            <telerik:GridBinaryImageColumn DataField="PersonImage" HeaderText="Photo" UniqueName="Upload" ConvertEmptyStringToNull = "true" 
                                ImageAlign="NotSet" ImageHeight="80px" ImageWidth="80px" ResizeMode="Fit" DataAlternateTextField="Name" 
                                DataAlternateTextFormatString="Image of {0}"
                                <HeaderStyle Width="10%" /> 
                            </telerik:GridBinaryImageColumn> 
                        </Columns> 
                        <EditFormSettings> 
                            <EditColumn ButtonType="ImageButton" /> 
                        </EditFormSettings> 
                    </MasterTableView> 
                    <ClientSettings AllowDragToGroup="True"
                    </ClientSettings> 
                </telerik:RadGrid> 
 


My control version is: 2009.02.826.35

Any kind of assistance will be greatly appreciated.

Regards,

Wayne

1 Answer, 1 is accepted

Sort by
0
Rosen
Telerik team
answered on 16 Nov 2009, 09:15 AM
Hi Wayne,

The error you have described is usually caused by feeding an incorrect image data into the  RadBinaryImage control and thrown by the .Net's Image object. Although I cannot recreate the described behavior you have described using your example, I suspect that the most reasonable cause for this is if adding the inserted object the image data, persisted to the database, to be incorrect and then when the RadGrid tries to load it after the insertion is made the error is thrown. Therefore you may check before the actual insertion if the binarydata is accurate for example by passing it to ImageEditor.LoadFromStream and check if no exception has been thrown.

Kind regards,
Rosen
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.
Tags
Grid
Asked by
Wayne Acton
Top achievements
Rank 1
Answers by
Rosen
Telerik team
Share this question
or