динамически выводить список отсортированных миниатюр из файловой системы - PullRequest
0 голосов
/ 29 июня 2011

Как я могу динамически отображать список из 10 миниатюрных изображений, которые хранятся в файловой системе? Миниатюры изображений для видео. Это то, что я до сих пор:

  • default.aspx, где я жестко запрограммировал ссылки на миниатюры, например:

    <a id="A1" href="~/PlayVideo.aspx?video=23" runat="server">
            <img id="Img1" src="~/Uploads/Thumbs/Sample.jpg" runat="server" name="go"
                border="0" height="100" width="144" />
    
    <a id="A2" href="~/PlayVideo.aspx?video=24" runat="server">
            <img id="Img2" src="~/Uploads/Thumbs/Sample2.jpg" runat="server" name="go"
                border="0" height="100" width="144" />
    
  • при нажатии на эти ссылки загружается playvideo.aspx, где у меня есть код для проигрывателя, и воспроизводится видео с номером 23 или 24 (в данном случае).

  • У меня есть строка запроса mysql, которая сортирует видео (ВЫБРАТЬ файл из видео ПО ЗАКАЗУ по дате DESC LIMIT 10)

Вот что мне нужно сделать: - Вставьте строку запроса в codebehind (default.aspx.cs), чтобы отсортированные миниатюры отображались на странице вместо жестко закодированных. Для этого используется GridView?

Надеюсь, это имеет смысл. Я использую asp.net c #. Заранее спасибо!

EDIT: Ниже мой код сейчас:

    protected void Page_Load(object sender, EventArgs e)
    {
        List<VideoDescriptor> vidList = new List<VideoDescriptor>();

        MySqlConnection DBConn = new MySqlConnection(WebConfigurationManager.ConnectionStrings["LocalMySqlServer"].ConnectionString);
        MySqlCommand DBCmd = new MySqlCommand();
        DBConn.Open();
        MySqlDataReader reader = DBCmd.ExecuteReader();

        try
        {
            DBCmd = new MySqlCommand("SELECT VideoID, ImgFile FROM (SELECT VideoID, ImgFile FROM video ORDER BY Rank DESC) as myalias LIMIT 10", DBConn);
            DBCmd.ExecuteReader();

            String ImgFileName;
            Int64 VidID;

            while (reader.Read())
            {
                ImgFileName = reader["ImgFile"].ToString().Trim();
                VidID = (Int64)reader["VideoID"];
                vidList.Add(new VideoDescriptor() { FileName = ImgFileName,  VideoID = VidID});
            }

        }

        catch (Exception exp)
        {
            Response.Write(exp);
        }


        reader.Close();
        DBCmd.Dispose();
        DBConn.Close();
        DBConn = null;

    }

    class VideoDescriptor
    {

        public string FileName { get; set; }
        public Int64 VideoID { get; set; }
    }

Итак, я извлек имя файла изображения и идентификатор видео, оба из которых мне нужны для ссылок на миниатюры, которые я вставил выше. Как мне это сделать? Я знаю, как просто отобразить эту информацию в виде таблицы, но как включить эту информацию в качестве части URL-адреса?

Еще раз спасибо!

Ответы [ 2 ]

0 голосов
/ 04 июля 2011

В итоге я создал кнопки изображений из кода, который выглядит как более простое решение:

        protected void Page_Load(object sender, EventArgs e)
    {
        MySqlConnection DBConn = new MySqlConnection(WebConfigurationManager.ConnectionStrings["LocalMySqlServer"].ConnectionString);
        MySqlCommand DBCmd = new MySqlCommand();
        DBConn.Open();

        try
        {
            DBCmd = new MySqlCommand("SELECT VideoID, ImgFileName FROM (SELECT VideoID, ImgFileName FROM videos ORDER BY Rank DESC) as myalias LIMIT 10", DBConn);
            MySqlDataReader reader = DBCmd.ExecuteReader();

            String ImgFileName;
            Int64 VidID;

            while (reader.Read())
            {
                ImgFileName = reader["ImgFileName"].ToString().Trim();
                VidID = (Int64)reader["VideoID"];
                ImageButton imgBtn = new ImageButton();
                imgBtn.ID = "image_id";
                imgBtn.ImageUrl = "~/Uploads/Thumbs/" + ImgFileName;
                imgBtn.PostBackUrl = "~/PlayVideo.aspx?video=" + VidID;
                placeHolder.Controls.Add(imgBtn);
            }
            reader.Close();

        catch (Exception exp)
        {
            Response.Write(exp);
        }

        DBCmd.Dispose();
        DBConn.Close();
        DBConn = null;

    }

и элемент управления заполнителем в aspx-файле, куда вы хотите поместить миниатюры:

            <asp:PlaceHolder ID="placeHolder" runat="server"></asp:PlaceHolder>
0 голосов
/ 29 июня 2011

Вероятно, вам лучше всего определить новый класс, например

Private Class VideoDescriptor Dim date, thumbPath, videoPath as String 'etc

Затем создайте список или какую-либо другую коллекцию этих дескрипторов.

Dim lstVideos as New List(Of VideoDescriptor)

Создайте свои VideoDescriptors любым способом (я не знаю, извлекаете ли вы данные из БД или что-то еще) и добавьте их все в список.

Если вы немного измените свой SQL-запрос, вы можете использовать его как LINQ-запрос для сортировки списка: http://www.devcurry.com/2009/02/sorting-date-in-generic-list-using-linq.html

Затем вы можете использовать свой список в качестве источника данных, например, для GridView.

Dim grdViewVideos as New GridView
grdViewVideos.DataSource = lstVideos

GridView автоматически создает столбцы на основе каждого атрибута элементов в списке и заполняет строки на основе данных каждого элемента.

Это немного общее, я знаю, и в VB, но, не видя ни одного вашего кода, я просто хотел дать вам несколько идей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...