2016-10-19 1 views
0

Ich habe ein Bild in einem GridView. Ich muss den Pfad dafür machen und es in den Back-Code (C#) tun. Ich kann gvImage jedoch nicht finden. Benutze ich GridView1.FindControl oder etwas?Finden Bild in GridView, ASP.NET

möchte ich es in C#

Markup zu finden:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Competitor_ID" DataSourceID="AccessDataSource1" EmptyDataText="There are no data records to display."> 
    <Columns> 
     <asp:CommandField ShowDeleteButton="true" ShowEditButton="true" /> 
     <asp:BoundField DataField="Competitor_ID" HeaderText="Competitor_ID" InsertVisible="False" ReadOnly="True" SortExpression="Competitor_ID" /> 
     <asp:BoundField DataField="Competitor_Salutation" HeaderText="Competitor_Salutation" SortExpression="Competitor_Salutation" /> 
     <asp:BoundField DataField="Competitor_Name" HeaderText="Competitor_Name" SortExpression="Competitor_Name" /> 
     <asp:BoundField DataField="Competitor_DoB" HeaderText="Competitor_DoB" SortExpression="Competitor_DoB" /> 
     <asp:BoundField DataField="Competitor_Email" HeaderText="Competitor_Email" SortExpression="Competitor_Email" /> 
     <asp:BoundField DataField="Competitor_Description" HeaderText="Competitor_Description" SortExpression="Competitor_Description" /> 
     <asp:BoundField DataField="Competitor_Country" HeaderText="Competitor_Country" SortExpression="Competitor_Country" /> 
     <asp:BoundField DataField="Competitor_Gender" HeaderText="Competitor_Gender" SortExpression="Competitor_Gender" /> 
     <asp:BoundField DataField="Competitor_ContactNo" HeaderText="Competitor_ContactNo" SortExpression="Competitor_ContactNo" /> 
     <asp:BoundField DataField="Competitor_Website" HeaderText="Competitor_Website" SortExpression="Competitor_Website" /> 
     <asp:BoundField DataField="Competitor_Photo" HeaderText="Competitor_Photo" SortExpression="Competitor_Photo" /> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:Image ID="gvImage" runat="server" Height="122px" Width="148px" /> 
      </ItemTemplate> 
     </asp:TemplateField>  
    </Columns> 
</asp:GridView> 
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/UserDatabase.accdb" DeleteCommand="DELETE FROM `Competitors` WHERE `Competitor_ID` = ?" InsertCommand="INSERT INTO `Competitors` (`Competitor_ID`, `Competitor_Salutation`, `Competitor_Name`, `Competitor_DoB`, `Competitor_Email`, `Competitor_Description`, `Competitor_Country`, `Competitor_Gender`, `Competitor_ContactNo`, `Competitor_Website`, `Competitor_Photo`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" SelectCommand="SELECT `Competitor_ID`, `Competitor_Salutation`, `Competitor_Name`, `Competitor_DoB`, `Competitor_Email`, `Competitor_Description`, `Competitor_Country`, `Competitor_Gender`, `Competitor_ContactNo`, `Competitor_Website`, `Competitor_Photo` FROM `Competitors`" UpdateCommand="UPDATE `Competitors` SET `Competitor_Salutation` = ?, `Competitor_Name` = ?, `Competitor_DoB` = ?, `Competitor_Email` = ?, `Competitor_Description` = ?, `Competitor_Country` = ?, `Competitor_Gender` = ?, `Competitor_ContactNo` = ?, `Competitor_Website` = ?, `Competitor_Photo` = ? WHERE `Competitor_ID` = ?"> 

EDIT: diesen Code versucht, das Bild URL zu bekommen, aber ich glaube nicht, dass ich etwas zu bekommen.

protected void Page_Load(object sender, EventArgs e) 
{ 
    string imgPath = Path.Combine("~/UploadedFiles/", (GridView1.FindControl("gvImage")).ImageUrl); 
} 

Kommt mit ‚Control‘ up enthält keine Definition für ‚ImageUrl‘ und keine Erweiterungsmethode ‚ImageUrl‘ ein erstes Argument vom Typ ‚Control‘ zu akzeptieren

+0

Was haben Sie getan, um 'gvImage' zu ​​finden? Teilen Sie Ihren Code. –

Antwort

1

Da die Image in ist gefunden Ein Steuerelement, das Daten wiederholt, müssen Sie die Zeilennummer angeben. gvImage existiert nur innerhalb von GridView1.

Image image = GridView1.Rows[i].FindControl("gvImage") as Image; 
string imgPath = image.ImageUrl; 
+0

Ja, das hat sehr geholfen, danke –