복붙노트

[SQL] ASP.NET을 사용하여 모든 이미지를 선택

SQL

ASP.NET을 사용하여 모든 이미지를 선택

나는 ASP.NET과 C # 새로운 오전. 나는 폴더에서 모든 이미지를 검색하고 페이지에 표시하려고하지만, 그것은 단지 하나 개의 이미지를 선택합니다.

내 ASP.NET 코드 :

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

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

내가 원하는 : 나는 SQL 테이블의 저장소입니다 경로의 모든 이미지를 선택합니다.

추가 : 다른 폴더에서 비디오 및 이미지를 선택하고 지정된 날짜 또는 최신 업로드 등으로 같은 페이지에 모두 보여 평균 경로는 SQL에 저장이 폴더에서 비디오를 선택하는 방법이있다

어떤 도움을 이해할 수있을 것이다.

편집 # 1

PHP에서 내가 모든 이미지를 얻기 위해 코드 아래 사용하고 보여, ASP.NET에서 아래의 코드에 어떤 일에 해당이있다?

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;?>

해결법

  1. ==============================

    1.쓰기이 (또한이 문을 사용하여 사용하는 것이 좋습니다)와 같은 문자열의 목록으로 이미지를 검색하는 사용자의 컬렉션 () 메소드 뒤에 코드에서 :

    쓰기이 (또한이 문을 사용하여 사용하는 것이 좋습니다)와 같은 문자열의 목록으로 이미지를 검색하는 사용자의 컬렉션 () 메소드 뒤에 코드에서 :

    protected IEnumerable<string> Collection()
    {
         string address = ConfigurationManager.ConnectionStrings["blogconnection"].ToString();
         using (SqlConnection con = new SqlConnection(address))
         {
             con.Open();
             string qry = "select * from images";
             SqlCommand cmd = new SqlCommand(qry, con);
             using (SqlDataReader dr = cmd.ExecuteReader())
             {
                 if (!dr.HasRows) return allimage;
                 while (dr.Read())
                 {
                     if (!string.IsNullOrEmpty(Convert.ToString(dr["Image_Path"])))
                     {
                         yield return (dr["Image_Path"].ToString());
                     }
                  }
              }
          }
    }
    

    다음 중 당신은 ASP를 사용할 수 있습니다 리피터를 다음과 같이 :

    <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>
    

    또는 당신은 이런 식으로 작업을 수행 할 수 있습니다 :

    <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>
    
  2. ==============================

    2.Form1에로 이미지 오브젝트 : 동적으로 새 ASP를 추가 할 수 있습니다.

    Form1에로 이미지 오브젝트 : 동적으로 새 ASP를 추가 할 수 있습니다.

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

    3.문제는이 성명에서입니다 :

    문제는이 성명에서입니다 :

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

    이 말씀은 무엇입니까? 그것은 오직 하나 Image.ImageUrl 각 이미지 경로 값을 할당한다. 그래서, Image.ImageUrl 마지막 할당 된 이미지 경로를 개최한다. 결과는 단 하나의 사진이 표시 될 것입니다. 이것은 당신이 원하는 없습니다.

    당신이 원하는 것은 : 모든 사진을 보여 -> 각 Image.ImageUrl에 각각의 이미지 경로를 지정 -> 동적으로 이미지를 생성하고 폼에 추가. 그래서, 문을 작성하는 대신, 당신이 뭔가를 같이해야한다 :

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

    코드는 테스트되지 않은 상태입니다. 그냥 아이디어에 초점을 맞 춥니 다. 당신은 이런 식으로 그것을 할, 또는 리피터, 또는 자신 만의 방법을 사용할 수 있습니다, 그것은 당신에게 달려 있습니다.

    당신은 분명 뭔가를 발견하면 나 한테 물어 주시기 바랍니다 :)

  4. ==============================

    4.사용자 정의도 스타일링으로 원하는대로 디스플레이 이미지 컨트롤을 사용할 수 있습니다

    사용자 정의도 스타일링으로 원하는대로 디스플레이 이미지 컨트롤을 사용할 수 있습니다

  5. ==============================

    5.1) 그것의 명백한 단일 HTML 개체에 여러 이미지를 표시 할 수 없습니다. 당신은 당신의 페이지를 표시 할 방법에 따라 리피터,의 GridView 또는 데이터 그리드 또는 동적 HTML 생성을 사용할 수 있어야합니다 (즉. HTML 디자인)

    1) 그것의 명백한 단일 HTML 개체에 여러 이미지를 표시 할 수 없습니다. 당신은 당신의 페이지를 표시 할 방법에 따라 리피터,의 GridView 또는 데이터 그리드 또는 동적 HTML 생성을 사용할 수 있어야합니다 (즉. HTML 디자인)

    당신이 리피터, GRIDVIEW 또는에서 Datagrid를 초기화 완료 후 2) 팔로우 ASP.NET 페이지의 라이프 사이클 이벤트가 제대로) 이벤트를 (귀하의 경우는 PageLoad (에서 코드를 작성할 수 있습니다)

    3)) 당신은 또한 비디오를 표시 할 수 있지만, 당신이 어떤 선수가 필요하다고, 그것은 훨씬 간단하지 않습니다에 대한 (당신은 타사 도구를 사용할 수 있습니다

  6. ==============================

    6.나는 그것이 작동하도록 코드를 수정했습니다. 대신 영문에서 정의하는 이미지는 코드 뒤에서 동적으로 추가 할 수 있습니다.

    나는 그것이 작동하도록 코드를 수정했습니다. 대신 영문에서 정의하는 이미지는 코드 뒤에서 동적으로 추가 할 수 있습니다.

    수정 된 ASP.NET 코드 :

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

    수정 된 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();
           }               
        }
    }
    
  7. ==============================

    7.나는 여기에 몇 가지 스크린 샷을 추가하면 여기부터 계속 할 수 있기를 바랍니다있다.

    나는 여기에 몇 가지 스크린 샷을 추가하면 여기부터 계속 할 수 있기를 바랍니다있다.

  8. from https://stackoverflow.com/questions/33597934/select-all-images-using-asp-net by cc-by-sa and MIT license