2015-11-08 18 views
13

Sono nuovo per ASP.NET e C#. Sto cercando di recuperare tutte le immagini dalla cartella e mostrarle sulla pagina, ma è solo selezionando un'immagine.selezionare tutte le immagini utilizzando Asp.Net C#

Il mio codice ASP.NET:

<form id="form1" runat="server" class="col-lg-5">    
    <asp:Image ID="Image" runat="server" /> 
</form> 

mio codice C#:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Data; 
using System.Configuration; 

namespace Blog 
{ 
    public partial class index : System.Web.UI.Page 
    { 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["blogconnection"].ToString()); 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      con.Open(); 
      string allimage; 
      string qry="select * from images"; 
      SqlCommand cmd = new SqlCommand(qry, con); 
      SqlDataReader dr =cmd.ExecuteReader(); 

      if (dr.HasRows) 
      { 
       while(dr.Read()) 
       { 
        if (!string.IsNullOrEmpty(Convert.ToString(dr["Image_Path"]))) 
        {            
         Image.ImageUrl = Convert.ToString(dr["Image_Path"]);           
        } 
       } 
      } 
      con.Close(); 
     }    
    } 
} 

quello che voglio: voglio selezionare tutti image quale percorso è il negozio nella tabella SQL.

aggiuntive: c'è un modo per selezionare i video dalla cartella quale percorso è il negozio in SQL, significherebbe per selezionare video e immagini dalla cartella diversa e mostrare sia sulla stessa pagina in base alla data specificata o per ultima caricati ecc

Qualsiasi aiuto sarà apprezzato.

Modifica # 1

in php uso il codice sottostante per ottenere le immagini e mostrarlo, c'è qualche cosa che equivale al codice qui sotto in ASP.NET?

codice PHP

<?php 
include 'conn.php'; 
$smt=$conn->prepare('SELECT * FROM post'); 
$smt->execute(); 

?> 
<?php include 'header.php'; 

?> 
<div class=""> 
<?php 
if(isset($_SESSION['user'])) 
{ 
include 'nav.php'; 
} 
else 
{ 
include 'nav-simple.php'; 
} 
?> 
<?php include 'slider.php';?> 

<?php include 'right_sidebar.php';?> 

    <div class="col-md-1 top_space"></div> 
<div class="container col-md-8 main-container-top"> 


    <br/> 

<div class=""> 
    <?php while ($gdata = $smt->fetch(PDO::FETCH_OBJ)): ?> 
     <a href="#" class="col-md-4"><img src="posts/<?php echo $gdata->Post_Path; ?>" alt="image" class="post-image"/></a> 
     <div class="media-body col-md-8 post pull-left"> 
      <div class="post-overview"> 
       <ul> 
        <li class="post-category"><?php echo $gdata->Category; ?></li> 
        <li class="post-timestemp">Post on <?php echo $gdata->Post_Date; ?></li> 
       </ul> 


       <a href="post-description.php?id=<?php echo $gdata->Id ?>"><h4 
         class="media-heading h4"><?php echo $gdata->Title; ?></h4></a> 

       <p class="post-text"><?php echo $gdata->Post; ?></p><br/> 
      </div> 


     </div> 
<div class="post-image-space"></div> 
    <?php endwhile;?> 
+0

u non può spremere multipli immagini in un unico asp: oggetto immagine. che ne dici di gridview? – g2000

+1

Metti un controllo Repeater sulla tua pagina, con un controllo Image all'interno del suo ItemTemplate. Associare il controllo Repeater a un elenco di URL immagine. Impostare la proprietà ImageUrl dell'immagine su un'espressione di associazione dati appropriata. – Joe

+0

in PHP html genera con il loop di codice, in ASP.NET hai specificato un singolo oggetto di tipo Immagine e provando a dare tutte le immagini a un oggetto HTML che ti scarpa l'ultima immagine recuperata sempre. –

risposta

3

È possibile aggiungere dinamicamente nuovi asp: oggetti immagine al form1.

Image img = new Image(); 
img.ImageUrl = dr["Image_Path"].ToString(); 
img.AlternateText = "Test image"; 
form1.Controls.Add(img); 
+0

E il ciclo while? è mentre non sto lavorando su tale processo in asp.net, perché in php ottengo tale risultato utilizzando il ciclo while. c'è un modo per usare il ciclo? –

+1

È possibile aggiungere le immagini in modo dinamico, ma è necessario farlo al punto giusto nel ciclo di vita della pagina per consentire loro di giocare bene con i postback. Sarebbe molto meglio usare un ripetitore e quindi legare i dati ad esso. – mason

-3

Ho aggiunto alcune schermate qui spero che tu possa continuare da qui in poi.

enter image description here

enter image description here

+9

Le persone non codificano con le immagini. Il codice è testo. Usa il testo nella tua risposta, non nelle immagini. Le foto dovrebbero essere solo supplementari. Inoltre, questo non risponde alla domanda di ottenere più immagini sulla pagina. – mason

+0

È una schermata di Visual Studio. Come ho detto non sono sicuro di come lo vuoi rendere. Hai avuto un'immagine ma questo ti dà tutte le immagini. Fammi sapere come vuoi visualizzare le immagini, devi renderle ad es. elemento div o controllo di modulo ASP.NET, ad es. Vista a griglia? Fammi sapere –

1

Il problema è in questa affermazione:

Image.ImageUrl = Convert.ToString(dr["Image_Path"]); 

Cosa fa questa dichiarazione fa? Assegna aimage path valore a solo unoImage.ImageUrl. Pertanto, Image.ImageUrl manterrà l'ultimo assegnato a image path. Il risultato è solo una foto verrà visualizzata. Questo è non quello che vuoi.

Quello che vuoi è: mostra tutte le immagini -> assegnano ogniimage path a ogniImage.ImageUrl ->creare dinamicamente il Image e aggiungerlo alla forma. Così, invece di scrivere quella dichiarazione, si dovrebbe fare qualcosa di simile:

Image img = new Image(); 
img.ImageUrl = dr["Image_Path"].ToString(); 
img.AlternateText = "Test image"; 
form1.Controls.Add(img); 

Il codice è non testato. Concentrati solo sull'idea. Puoi farlo in questo modo, o usare lo repeater, o a modo tuo, dipende da te.

Sentitevi liberi di chiedere a me se trovate qualche dubbio :)

8

Nel codice dietro scrivere il vostro metodo di Collection() per recuperare le immagini come List di Strings come questo (anche che è meglio usare Using dichiarazioni) :

Allora o si può usare asp:Repeater come questo:

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="imgCats"> 
     <ItemTemplate> 
     <div> 
      <img src='<%# Container.DataItem.ToString() %>' alt="" /> 
     </div>     
     </ItemTemplate> 
</asp:Repeater> 
<asp:ObjectDataSource ID="imgCats" runat="server" SelectMethod="Collection" 
      TypeName="WebApplication1.WebForm8"> 
</asp:ObjectDataSource> 

Oppure si può fare in questo modo:

<form id="form1" runat="server" class="col-lg-5"> 
    <div> 
    <ul> 
     <% var drc = Collection(); 
      foreach (var item in drc) 
      { %> 
      <li> 
       <img src="<%: item %>"/> 
      </li> 
     <% } %> 
    </ul> 
    </div> 
</form> 
1

È possibile utilizzare il controllo per visualizzare le immagini come si desidera con uno stile personalizzato anche

1

1) È ovvio non è possibile visualizzare più immagini in un singolo HTML oggetto. È necessario disporre di utilizzare Repeater, GridView o DataGrid o la generazione di HTML dinamico in base a come si desidera mostrare sulla tua pagina (ad esempio HTML design)

2) Seguire pagina ASP.NET eventi del ciclo di vita correttamente (in caso è possibile scrivere codice in PageLoad() evento, una volta terminato l'inizializzazione Repeater, Gridview o Datagrid)

3) è anche possibile visualizzare i video, ma per questo è necessario un certo giocatore, che non sarà molto semplice (è possibile utilizzare Terzo strumenti party)

0

Ho modificato il codice per farlo funzionare. Invece, definendo l'immagine in aspx, aggiungila dinamicamente dal tuo codice.

Il codice ASP.NET Modificato:

<form id="form1" runat="server" class="col-lg-5">    

</form> 

tuo Modificato il codice C#:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Data; 
using System.Configuration; 

namespace Blog 
{ 
    public partial class index : System.Web.UI.Page 
    { 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["blogconnection"].ToString()); 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      con.Open(); 
      string allimage; 
      string qry="select * from images"; 
      SqlCommand cmd = new SqlCommand(qry, con); 
      SqlDataReader dr =cmd.ExecuteReader(); 

      if (dr.HasRows) 
      { 
       while(dr.Read()) 
       { 
        if (!string.IsNullOrEmpty(Convert.ToString(dr["Image_Path"]))) 
        {            
         Image img = new Image(); 
         img.ImageUrl = dr["Image_Path"].ToString(); 
         img.AlternateText = dr["Image_Path"].ToString(); 
         form1.Controls.Add(img);           
        } 
       } 
      } 
      con.Close(); 
     }    
    } 
} 
+0

bene il tuo codice non renderà chiara l'interfaccia utente, voglio dire, il tuo codice non è compatibile con l'interfaccia utente. –

Problemi correlati