将gridview中选定的图像插入数据库
本文关键字:图像 插入 数据库 gridview | 更新日期: 2023-09-27 18:00:06
我想将gridview中选定的图像插入到mysql表中。当我尝试时,它会给我信息,说
中发生类型为"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>
我觉得你的很多代码都不正确
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);