Использование программных изображений в Nivo SLider с asp.net и c # - PullRequest
1 голос
/ 23 августа 2011

"В div слайдера допускаются только изображения или изображения, обернутые в ссылки. Любой другой HTML-код может разбить слайдер."

Каков наилучший способ программной вставки изображений из базы данных в c #?Я использовал метку внутри тега div id = "slider", но потом понял, что метка создаст изображения внутри тега span и, следовательно, сломает ползунок.

lblSlider.Text += "<img src=\"" + URL + "\" alt=\"" + address + "\" title=\"<a href='Featured/" + address" + address + ", " + city + "</a>\" />";

Ответы [ 3 ]

0 голосов
/ 23 августа 2011

Хорошо, я не пробовал другое решение, но я сделал это, и оно работает: Вот некоторые глобальные переменные c #:

protected int count;
protected string[] arr = new string[20];

Затем я присваиваю значения массиву строк из моей базы данных в методе Page_Load.

А потом я просто пишу слайдер nivo с javascript на своей странице:

    <script type="text/javascript">
        document.write("<div id='slider' class='nivoSlider'>");
        var count = <%= count %>; 
        var myArray = <% = new JavaScriptSerializer().Serialize(arr) %>;
        for(var i = 0; i < count; i++) {
            document.write(myArray[i]);
        }

        document.write("</div>");
    </script>

Мне кажется, что это решение проще, но если кто-то решит, что я должен использовать другое решение, дайте мне знать. О, и не забывайте пространство имен System.Web.Script.Serialization

0 голосов
/ 29 января 2012

У меня такое же требование, и я попробовал приведенный ниже код, чтобы выполнить динамическую загрузку изображений на основе категории.Эти изображения загружены из моей базы данных.Я новичок в ASP.Net, пожалуйста, дайте мне знать, если я сделал что-то не так или сделал грубые ошибки:).

в файле ASP.Net: я использую метод добавления ползунка nivo

    <script type="text/javascript">
    $(window).load(function() {

        $('#slider').append('<img id="ad5" src=<%=__ad1ImageUrl %> />');
        $('#slider').append('<img id="ad6" src=<%=__ad2ImageUrl %> />');
        $('#slider').append('<img id="ad7" src=<%=__ad3ImageUrl %> />');
        $('#slider').append('<img id="ad8" src=<%=__ad4ImageUrl %> />');
        $('#slider').nivoSlider();
    });
</script>

Моя таблица выглядит следующим образом:

    <table style="height: 183px; width: 100%" cellpadding="0" cellspacing="0" border="0">
    <tr>
        <td align="left">
            <div id="wrapper">
                <div class="slider-wrapper theme-default">
                    <div class="ribbon">
                    </div>
                    <div id="slider" class="nivoSlider">
<!-- note that no images added here -->
                    </div>
                </div>
            </div>
        </td>
    </tr>
</table>

В следующем коде: Используйте переменную для хранения URL-адресов изображений.Теперь вы можете получить URL-адрес (ы) из БД и получить заполненные.В моем коде я использовал эти переменные (также можно использовать массив) для захвата пути URL.Вы можете получить пути из любого источника, например, базы данных, XML или ...

public string __ad1ImageUrl = "";
public string __ad2ImageUrl = "";
public string __ad3ImageUrl = "";
public string __ad4ImageUrl = "";

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        __ad1ImageUrl = "UserControls/Images/mainBanner1.jpg";
        __ad2ImageUrl = "UserControls/Images/mainBanner2.jpg";
        __ad3ImageUrl = "UserControls/Images/mainBanner3.jpg";
        __ad4ImageUrl = "UserControls/Images/mainBanner4.jpg";
    }
}
0 голосов
/ 23 августа 2011

Используйте разметку вот так ...

<img src='ImageHandler.ashx?ProductID=<%# Eval("ProductID")%>' 
    alt="<%# Eval("ProductName") %>" title="<%# Eval("ProductName") %>" />

... в сочетании с таким классом изображения HttpHandler (адаптируется для вашей конкретной схемы БД):

public class ImageHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        if (context.Request.QueryString["productID"] != null)
        {
            try
            {
                string ProductID = context.Request.QueryString["ProductID"];
                if (Convert.ToInt32(ProductID) > 0)
                {
                    const string CONN 
                        = "Initial Catalog=xxx;Data Source=xxx;Integrated Security=SSPI;";

                    string selectQuery 
                        = "SELECT Photo FROM dbo.Products WHERE dbo.Products.ProductID=" 
                            + ProductID.ToString();
                    SqlConnection conn = new SqlConnection(CONN);
                    SqlCommand cmd = new SqlCommand(selectQuery, conn);

                    conn.Open();
                    SqlDataReader dr = cmd.ExecuteReader();

                    dr.Read();
                    context.Response.BinaryWrite((Byte[])dr[0]);
                    dr.Close();
                    conn.Dispose();
                    // context.Response.End(); 
                    // caused an "Abort thread" error 
                    // - this is correct and is a special exception
                }
            }
            catch (Exception ex)
            {
                ErrorReporting.LogError(ex);   
            }
        }
        else
            throw new ArgumentException("No ProductID parameter specified");
    }

    public bool IsReusable
    {
        get
        {
            return true; // multiple images otherwise false
        }
    }
}
...