2016-08-04 6 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

あなたのグリッドビューのマークアップを表示してください – 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); 
関連する問題