2010-11-04 6 views
0

J'ai construit un code back-end pour récupérer une image à partir d'une base de données SQL Server. Je veux afficher cette image sur mon formulaire Web en fonction de la valeur sélectionnée par currenct d'un contrôle gridview.Comment afficher une image basée sur SelectedValue dans un GridView?

J'ai une page appelée GetImage.aspx qui prend deux paramètres de chaîne de requête, entityId et entityType. entityId est le GridView.SelectedValue et entityType est simplement "T". Mon code pour GetImage.aspx ressemble à ceci:

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(); 
     } 
    } 
} 

Quel code ASP.NET dois-je afficher sur mon formulaire d'appel?

Merci.

EDIT

J'ai ajouté ce code à ma forme (je ne cherche pas à afficher l'image GridView, juste ma forme sous le GridView):

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

et ajouté ce code:

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

l'image n'apparaît pas, mais je peux voir la procédure stockée en cours d'exécution sur le serveur de base de données avec le ID correct lorsque je sélectionne un élément dans GridView, de sorte que cette partie fonctionne, mais pas l'affichage de l'image. Qu'est-ce que je rate?

Répondre

1

Dépend de ce que vous affichez dans gridview et de la manière dont les lignes sont sélectionnées. La grille n'a pas de valeur sélectionnée - elle a sélectionné l'élément, qui peut contenir plusieurs clés de données.

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"; 
} 
+0

Merci je l'ai essayé et avons ajouté plus d'informations au fond de ma question. Jetez un coup d'oeil s'il vous plait. –

+0

Merci, je l'ai fait fonctionner maintenant - il y avait un petit bug dans GetImage.aspx. J'ai dû supprimer le Response.ContentType parce que ce n'est pas stocké dans ma base de données. –

Questions connexes