вставить содержимое MySQL в HTML? - PullRequest
0 голосов
/ 23 марта 2011

Привет, я пытаюсь найти способ записать содержимое MySQL в HTML-код:

У меня есть область на моей странице asp с именем <div id="test1"></div> (эта область является статической)

Iхочу взять содержимое из моей таблицы и поместить код в этот div под другим именем div (div id = sqlcontent)

, чтобы это выглядело так:

<div id="test1">
        <div id="mysqlcontent">something the user would write which is stored in my db</div>
</div>

есть ли способкак это:

 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.HtmlControls.HtmlGenericControl; 

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

    protected void Page_Load(object sender, EventArgs e)
    {

        string theUserId = Session["UserID"].ToString();
        //Label1.Text = Convert.ToString(theUserId);

        using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=x; Password=x;"))
        {
            cn.Open();
            using (OdbcCommand cmd = new OdbcCommand("SELECT WallPosting.Wallpostings FROM WallPosting LEFT JOIN WallPosting ON User.UserID = WallPosting.UserID WHERE User.UserID=" + theUserId + "", cn))
            //{

            //    cmd.Parameters.AddWithValue("@UserID", theUserId);


            using (OdbcDataReader reader = cmd.ExecuteReader())
            {
                var divHtml = new System.Text.StringBuilder("<div id=mysqlcontent>");
                while (reader.Read())
                {
                    divHtml.Append(String.Format("{0}", reader.GetString(0)));
                }

                divHtml.Append("</div>");
                test1.innerHtml = divHtml.ToString();
// error on this line innerHtml does not contain a definition for'innerHtml'?
            }
        }
    }

Не уверен, что это возможно с C # в asp, чтобы сделать это, поэтому я попытался ниже путь через jquery incase?Но я не уверен, как писать в J?

$(function () {

    $(page load).**unsure what goes here**(function () {
        var x = $(retrieve some data from mysql table unsure if jquery can do this).val();
        var newdiv = $("<div></div>").html(x).attr('id', 'mysqlcontent');
        $('#test1').append(newdiv);
    });
});  

ASP html:

</script>
<p>
    <asp:TextBox ID="TextBox1" name="TextBox1" runat="server" Rows="3" 
        Height="47px" Width="638px"></asp:TextBox>
</p>
<p>
    <asp:Button ID="Button1" runat="server" Text="Post Message" Width="98px" 
        onclick="Button1_Click" />
    </p>
<p>
    <asp:Table ID="Table1" name="Table1" runat="server" Width="488px"></asp:Table>
</p>

<div id="test1" runat="server" />

</asp:Content>

Ответы [ 4 ]

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

В качестве альтернативы вы можете добавить буквальный контроль внутри div.

<div id="test1">
<div id="mysqlcontent">
<asp:literal id="literal1" runat="server"></asp:literal>
</div>
</div>

После этого вы можете применить любые данные (включая HTML-теги), которые вы хотите, например,

 literal1.Text="something";
 literal1.Text+="More data";
1 голос
/ 23 марта 2011

Для базовой реализации C #, если вы пометите div test1 с runat="server" ...

<div id="test1" runat="server" />

... тогда вы можете ссылаться на него в своем коде позади ...

protected global::System.Web.UI.HtmlControls.HtmlGenericControl test1;

... и может создать контент с помощью DataReader перед настройкой контента

// prepare DataReader
var divHtml = new System.Text.StringBuilder("<div id=mysqlcontent>")
while (reader.Read()) {
   divHtml.Append("something built from your database text");
}
divHtml.Append("</div>")
test1.InnerHtml = divHtml.ToString();
0 голосов
/ 23 марта 2011

Конечно, есть несколько способов, и самый простой способ - поместить runat = "server" в div mysqlcontent, а затем во время обратной передачи получить доступ к этому div.

Другой способ - использование метода ajax или jQuery.

0 голосов
/ 23 марта 2011
$("#mysqlcontent").html("sqlthere")

EDIT

Чтобы достичь своей цели, вы должны знать, как работает ajax, а также - что такое ajax? -.

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

Ни Javascript, ни JQuery не могут общаться с MySQL или любой другой RDBM. Вы должны создать файл, скажем: getComments.asp

Все, что делает этот файл - это запрашивает базу данных mysql и возвращает результаты в любом формате, который вам нужен (простой текст, html, xml, json, ... и т. Д.).

Затем на стороне клиента вы делаете что-то вроде:

1- Если ваш getComments.asp возвращает ваши комментарии, например, в HTML, он может вернуть:

  <div class="coment">I am a good comment</div>
  <div class="coment">I am a short</div>
  <div class="coment">I am a looooooooooooooooooong</div>

Затем в jquery вы делаете:

$.ajax({
  url: 'getComments.asp',
  success: function(data) {
    $('#myCommentsDiv').html(data);
  }
});

2- Json: Asp возвращает комментарии в формате json (см. http://www.google.be/search?sourceid=chrome&ie=UTF-8&q=c%23+json) и в своем коде вы делаете:

$.ajax({
  url: 'getComments.asp',
      DataType: 'json',
  success: function(data) {
            var comments = eval('(' + data + ')');
            for (comm in comments){
                $('#commentsDiv').prepend("<div class='comment'>" + comm + "</div>");
            }

  }
});

Для получения дополнительной информации о jquery / ajax: http://api.jquery.com/jQuery.ajax/

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