2016-08-09 16 views
1

Iam Bindung <% # Eval ("message")%> innerhalb Div tag.Now iam Daten aus db mit Dataset innerhalb Repeater abrufen. Jedes Mal Seite wird geladen Daten aus abrufen db, das ich vermeiden will. So entschied ich mich, Jquery ajax zu verwenden, um data.My Problem zu binden, wie wir datag innerhalb div-Tag binden können.Binden von Dataset an ASP.Net Div-Tag mit jQuery AJAX

Mein Code ist:

<asp:Repeater ID="rep" runat="server" 
    OnItemDataBound="rep_ItemDataBound"> <ItemTemplate> 
     <div> 
      <p><%#Eval("message") %></p> 
     </div> 
     </ItemTemplate> 
     </asp:Repeater> 

-Code Behind:

[WebMethod] 
    public static string GetMessages() 
    { 
     string query = "GetMessageData"; 
     SqlCommand cmd = new SqlCommand(query); 
     cmd.CommandType = CommandType.StoredProcedure; 
     return GetData(cmd).GetXml(); 
    } 
    private static DataSet GetData(SqlCommand cmd) 
    { 
     string strConnString = ConfigurationManager.ConnectionStrings["connectionng"].ConnectionString; 
     using (SqlConnection con = new SqlConnection(strConnString)) 
     { 
      using (SqlDataAdapter sda = new SqlDataAdapter()) 
      { 
       cmd.Connection = con; 
       sda.SelectCommand = cmd; 
       using (DataSet ds = new DataSet()) 
       { 
        sda.Fill(ds); 
        return ds; 

       } 
      } 
     } 
    } 

Javascript:

$(function() { 
    $.ajax 
    ({ 
     type: "POST", 
     url: "welcome.aspx/GetMessages", 
     data: '{}', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: OnSuccess, 
     failure: function (response) { 
      alert(response.d); 
     }, 
     error: function (response) { 
      alert(response.d); 
     } 
    }); 
}); 

function OnSuccess(response) { 
    var xmlDoc = $.parseXML(response.d); 
    --Iam stuck Here-- 

}

Also, wenn Erfolg, wie kann ich meine Daten-Set binden an div Etikett im Repeater.

+0

Warum Entfernen der Repeater nicht? –

+0

Hallo, die Anwendung ist wie das Posten von Nachrichten.So, wenn ich Nachrichten posten, wird es in db gespeichert und durch Repeater durch gebundene Nachrichten abgerufen, die nach dem Veröffentlichungsdatum geordnet sind. Früher habe ich im Repeater mit dem Dataset im Code hinterher gebunden wie rep.DataSource = this.GetMessages(); rep.DataBind(). Aber jedes Mal beim Posten von Nachrichten verwendet es Seite laden und Daten abrufen und binden sie mit Repeater, die ich nicht brauche. Daher entschied ich mich, jquery Ajax Methode zu verwenden, um Daten innerhalb Repeater zu binden, aber ich steckte bei der Linie in den Code .. – havin

Antwort

1

Alles, was Sie wirklich tun müssen, ist das durch den $.ajax-Aufruf zurückgegebene XML zu durchlaufen und die Ergebnisse an ein Element auf der Seite anzuhängen.

1. Fügen Sie <div id="result"></div> irgendwo auf Ihrer Seite hinzu. Wir schreiben die Ausgabe des $.ajax Aufrufs an dieses Element.

2.Ändern Ihre OnSuccess() Funktion wie folgt aus:

function OnSuccess(response) { 
    var xmlDoc = $.parseXML(response.d); 
    var length = xmlDoc.children[0].children.length; 
    $("#result").empty(); 

    for(var i = 0; i < length; i++) 
    { 
     var item = xmlDoc.children[0].children[i]; 
     var message = item.getElementsByTagName("message")[0].innerHTML; 
     var div = "<div><p>" + message + "</p></div>"; 
     $("#result").append(div); 
    } 
} 
+0

Hey danke ..Ich habe meine Frage mit meinem detaillierten code.Can Sie pls untersucht .. – havin

+0

Ich verstehe nicht, was Sie wollen, dass ich in? Ich gab Ihnen die Antwort, alle Sie müssen kopieren und fügen Sie es in Ihre Lösung und debuggen es –

+0

Danke wird daran arbeiten. – havin