Добавление изображения asp.net в div - PullRequest
1 голос
/ 23 марта 2011

Есть ли способ, которым я мог бы динамически добавить Image1 в цикл while в приведенном ниже коде (содержится в div) Под этим я подразумеваю фактическое добавление изображения asp в div? через код. На данный момент, как я вижу, код ищет изображение asp, но я не видел, как вы можете «добавить» его в мой динамический контент:

using (OdbcCommand cmd = new OdbcCommand("SELECT Wallpostings FROM WallPosting WHERE UserID=" + userId + " ORDER BY idWallPosting DESC", cn))
{
    using (OdbcDataReader reader = cmd.ExecuteReader())
    {
        var divHtml = new System.Text.StringBuilder();
        while (reader.Read())
        {
            divHtml.Append("<div id=test>");
            divHtml.Append(String.Format("{0}", reader.GetString(0)));
            divHtml.Append("</div>");
        }
        test1.InnerHtml = divHtml.ToString();
    }
}

Думал, у меня это с этим:

        var divHtml = new System.Text.StringBuilder();
        while (reader.Read())
        {
                    divHtml.Append("<div id=test>");
                    divHtml.Append(String.Format("{0}", reader.GetString(0)));
                    Image img = new Image();
                    img.ImageUrl = "~/userdata/2/uploadedimage/batman-for-facebook.jpg";
                    divHtml.Append(img);
                    divHtml.Append("</div>");
        }
        test1.InnerHtml = divHtml.ToString();

Я получаю прикольный вывод, хотя?

Смотри картинку:

enter image description here

Я тоже попробовал это:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.Odbc;
    using System.Web.UI.WebControls.Image;
    using System.Web.UI.HtmlControls.HtmlGenericControl;
    using System.IO;

    public partial class UserProfileWall : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            string theUserId = Session["UserID"].ToString();
            PopulateWallPosts(theUserId);
        }
        public static string RenderHtmlString(this System.Web.UI.HtmlControls.HtmlGenericControl htmlControl)
        {
            string result = string.Empty;
            using (System.IO.StringWriter sw = new System.IO.StringWriter())
            {
                var writer = new System.Web.UI.HtmlTextWriter(sw);
                htmlControl.RenderControl(writer);
                result = sw.ToString();
                writer.Close();
            }
            return result;
        }
        private void PopulateWallPosts(string userId)
        {
            using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=root; Password=commando;"))
            {
                cn.Open();
                using (OdbcCommand cmd = new OdbcCommand("SELECT Wallpostings FROM WallPosting WHERE UserID=" + userId + " ORDER BY idWallPosting DESC", cn))
                {
                    using (OdbcDataReader reader = cmd.ExecuteReader())
                    {


                        var divHtml = new System.Text.StringBuilder();
                        while (reader.Read())
                        {
                            using (StringWriter sw = new StringWriter())

                            divHtml.Append("<div id=test>");
                            divHtml.Append(String.Format("{0}", reader.GetString(0)));
                            Image img = new Image();
                            img.ImageUrl = "~/userdata/2/uploadedimage/batman-for-facebook.jpg";
                            divHtml.Append(img.RenderHtmlString());
//this line
                            divHtml.Append("</div>");
                        }
                        test1.InnerHtml = divHtml.ToString();
                    }
                }
            }
        }

Но у RenderHtmlString нет определения?

Ответы [ 4 ]

4 голосов
/ 23 марта 2011
HtmlGenericControl("div") divHtml = new HtmlGenericControl("div");
divHtml.Controls.Add( HtmlImage image = new HtmlImage{ Src = "pathgoeshere" } );

Предположительно, вам нужно будет также вернуть это как строку? Если это так, попробуйте этот удобный Generic http://www.refactory.org/s/render_html_string_from_htmlgenericcontrol/view/latest, но в действительности сделайте то, что предлагают все остальные, и используйте мощность <asp:PlaceHolder в полной мере и просто добавьте этот возвращенный элемент управления в коллекцию элементов управления заполнителя.

3 голосов
/ 23 марта 2011

Нет, вы не можете добавить серверный элемент управления в буквальное представление элемента DOM.

Я не уверен, что это за тип элемента управления "test1", но вы должны заменить его на элемент управления PlaceHolder и сделать следующее (не проверено!):

 using (OdbcCommand cmd = new OdbcCommand("SELECT Wallpostings FROM WallPosting WHERE UserID=" + userId + " ORDER BY idWallPosting DESC", cn))
        {
            using (OdbcDataReader reader = cmd.ExecuteReader())
            {
                var divHtml = new System.Text.StringBuilder();
                while (reader.Read())
                {
                    System.Web.UI.HtmlControls.HtmlGenericControl div = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
                    div.ID = "test";
                    div.InnerHtml = String.Format("{0}", reader.GetString(0));
                    Image img = new Image();
                    img.ImageUrl = "~/images/test.jpg";
                    img.AlternateText = "Test image";
                    div.Controls.Add(img);
                    test1.Controls.Add(div);
                }
                test1.InnerHtml = divHtml.ToString();
            }
        }

Надеюсь, этопомогает!

1 голос
/ 23 марта 2011

Попробуйте использовать заполнитель

Image img = new Image(); // instantiating the control
img.ImageUrl = "~/myimage.gif"; // setting the path to the image
placeholderpicture.Controls.Add(img);

С http://forums.asp.net/t/1308158.aspx/1

1 голос
/ 23 марта 2011

Просто немного беспокойства.Вы динамически строите свою строку SQL.Обязательно очистите переменную «userid».

Вы можете динамически создавать изображения, выполнив следующие действия:

System.Web.UI.WebControls.Image img = new Image();
img.ImageUrl = "~/img/image1.jpg";

Знаете ли вы изображения, которые вы хотите использовать уже?Изображения или источник изображений находятся в вашей базе данных?

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