【问题标题】:How to display an image based on SelectedValue in a GridView?如何在 GridView 中显示基于 SelectedValue 的图像?
【发布时间】:2011-05-05 02:09:02
【问题描述】:

我已经构建了一些后端代码来从 SQL Server 数据库中检索图像。我想根据 gridview 控件的当前选定值在我的 Web 表单上显示此图像。

我有一个名为 GetImage.aspx 的页面,它接受两个查询字符串参数 entityId 和 entityType。 entityId 是 GridView.SelectedValue 并且 entityType 只是“T”。我的 GetImage.aspx 代码如下所示:

protected void Page_Load (Object server, EventArgs e)
{
    if ((Request.QueryString["entityId"] != null) && (Request.QueryString["entityType"] != null))
    {
        int entityId = int.Parse(Request.QueryString["entityId"]);
        string entityType = Request.QueryString["entityType"];

        DBUtil DB = new DBUtil();

        DataTable dt = DB.GetScreenshot(entityId, entityType);

        if (dt != null)
        {
            Byte[] bytes = (Byte[])dt.Rows[0]["screenshot"];
            Response.Buffer = true;
            Response.Charset = "";
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.ContentType = dt.Rows[0]["ContentType"].ToString();
            Response.AddHeader("content-disposition", "attachment;filename="+ dt.Rows[0]["fileName"].ToString());
            Response.BinaryWrite(bytes);
            Response.Flush();
            Response.End();
        }
    }
}

我需要什么 ASP.NET 代码才能在我的调用表单上显示它?

谢谢。

编辑

我已将此代码添加到我的表单中(我不想在 GridView 中显示图像,只是在我的 GridView 下的表单上):

<img id="tradeScreenshot" runat="server" alt="screenshot" />

并添加了以下代码:

protected void grdTrades_SelectedIndexChanged(object sender, EventArgs e)
{
    string tradeId = grdTrades.SelectedDataKey.Value.ToString();
    tradeScreenshot.Src = "GetImage.aspx?entityId=" + tradeId + "&entityType=T";
}

图像没有显示,但是当我在 GridView 中选择一个项目时,我可以看到在具有正确 ID 的数据库服务器上执行的存储过程,因此该部分正在工作,但图像的显示不是.我错过了什么?

【问题讨论】:

    标签: c# asp.net image gridview


    【解决方案1】:

    取决于您在 gridview 中显示的内容以及如何选择行。 Grid 没有 selectedvalue - 它有选中的 item,它可以有多个数据键。

    ASP.NET:

    <img src="" runat="server" id="selectedimage" />
    <asp:GridView OnSelectedIndexChanged="ChangeItem" 
      DataKeyNames="ImageId"
      runat="server" id="MyGrid"></asp:GridView>
    

    C#:

    public void ChangeItem(object o,EventArgs e){
       string ImageId = MyGrid.SelectedDataKey.Value.ToString();
       selectedimage.Src = "GetImage.aspx?entityId="+ImageId+"&entityType=T";
    }
    

    【讨论】:

    • 谢谢我已经尝试过了,并在我的问题底部添加了更多信息。请看一看。
    • 谢谢我现在可以正常工作了 - GetImage.aspx 中有一个小错误。我不得不删除 Response.ContentType 因为它没有存储在我的数据库中。
    【解决方案2】:

    我遇到了同样的问题,我在我的程序中使用了存储过程 这是我在按钮单击中将图像调用到 DataGridView 的方式。

    pbxImage.Image = GetPhoto((byte[])dgvUrun.CurrentRow.Cells[8].Value);

    这里是 GetPhoto 方法:

    private Image GetPhoto(byte[] photo)
        {
            MemoryStream ms = new MemoryStream(photo);
            return Image.FromStream(ms);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 2023-03-10
      • 2014-08-09
      • 2020-03-13
      • 2022-01-15
      相关资源
      最近更新 更多