2016-08-04 35 views
0

我想从gridview插入选定的图像到mysql表中。当我尝试,它给我消息说从gridview插入选定的图像到db

类型的异常“System.InvalidCastException”发生在 App_Web_zptg3ta3.dll但在用户代码中没有处理。其他 信息:无法投射类型为'System.Int32'的对象至类型 'System.Data.DataRow'。

下面是我的C#&标记代码:

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

显示你的gridview标记请 – naveen

回答

0

很多你的代码看起来不正确我。开始于:

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

GridView.SelectedValue是不是你想要的。我相信你想要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);