2016-08-04 11 views
0

Ich möchte das ausgewählte Bild aus Gridview in die MySQL-Tabelle einfügen. Wenn ich versuche, es gibt mir NachrichtAusgewähltes Bild aus Gridview in db einfügen

eine Ausnahme vom Typ ‚System.InvalidCastException‘ aufgetreten in App_Web_zptg3ta3.dll sagen, wurde aber nicht in Benutzercode behandelt. Zusätzliche Information: Kann Objekt des Typs 'System.Int32' nicht umwandeln, um 'System.Data.DataRow' einzugeben.

Unten ist mein C# & Markup-Code:

if (gvImages.SelectedIndex != -1) 
{ 
    DataRow SelectedRowValue = ((DataRow)gvImages.SelectedValue); 
byte[] ImageBytes = (byte[])SelectedRowValue.ItemArray[1]; 
MySqlCommand cmd2 = new MySqlCommand("INSERT INTO rasmlar (Rasm) VALUES (@ImageSource)", con); 
cmd2.Parameters.Add("@ImageSource", MySqlDbType.Blob, ImageBytes.Length).Value = ImageBytes; 
    cmd2.ExecuteNonQuery(); 
} 

<asp:GridView ID="gvImages" runat="server" OnRowDataBound="OnRowDataBound" 
         DataKeyNames="Rasm_ID" AutoGenerateSelectButton="True" AllowPaging="True" 
         AutoGenerateColumns="False" OnPageIndexChanging="gvImages_PageIndexChanging" 
         PageSize="5" SelectedIndex="1"> 
         <Columns> 
          <asp:TemplateField HeaderText="Rasm_ID"> 
           <EditItemTemplate> 
            <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Rasm_ID") %>'></asp:TextBox> 
           </EditItemTemplate> 
           <ItemTemplate> 
            <asp:Label ID="Label1" runat="server" Text='<%# Bind("Rasm_ID") %>'></asp:Label> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="Rasm"> 
           <ItemTemplate> 
            <asp:Image ID="Image1" runat="server" Height="80" Width="80" /> 
           </ItemTemplate> 
          </asp:TemplateField> 
         </Columns> 
         <selectedrowstyle backcolor="LightCyan" forecolor="DarkBlue" font-bold="true"/>       
         </asp:GridView> 
+0

zeigen Sie bitte Ihre gridview Markup – naveen

Antwort

0

Viele Code sieht mir falsch. Beginnen mit:

DataRow SelectedRowValue = ((DataRow)gvImages.SelectedValue); 

GridView.SelectedValue ist nicht was Sie wollen. Ich glaube, Sie wollen GridView.SelectedRow:

GridViewRow row = gvImages.SelectedRow; 

// Change `.Cells[5]` to the correct cell index. 
byte[] imageAsBytes = (byte[])row.Cells[5].Value; 
MemoryStream ms = new MemoryStream(); 
Image i = Image.FromStream(ms);