asp.net Holen Sie sich die html-Steuerelemente im code hinter
Wenn ich ändern das html auf einer Seite mit Hilfe von JavaScript, wie kann ich diese änderungen in meine ASP.NET code hinter?
Fand ich einige dhtml-drag-and-drop" - code online (http://www.dhtmlgoodies.com/scripts/drag-drop-nodes/drag-drop-nodes-demo2.html), aber nach dem Umzug Liste von Elementen von einem Steuerelement zu einem anderen, ich weiß nicht, wie "Zugang" jedes Steuerelement in der code-behind-ich kann also speichern Sie die Liste Elemente, die in jedem control.
Habe ich versucht mit dem HTML-Agility-pack, aber es scheint, wie ich bin nur in der Lage, den Zugriff auf die unveränderte html - das bedeutet, alle Bedienelemente sind leer.
Jede Hilfe/Vorschläge dankbar. Oder irgendwelche Vorschläge für einen besseren Weg, dies zu erreichen, sind willkommen (jQuery? Ajax-Toolkit?).
BEARBEITEN:
Hier finden Sie den code. Ich bin in der Lage, füllen Sie ein ASP-Steuerelement Label (_saveContent), aus der JavaScript-Funktion saveDragDropNodes, mit der "ul-ID" und die entsprechende "li" Steuerungen, die habe ich gezogen. Wenn Sie auf die Schaltfläche speichern allerdings, mein Label-Steuerelement enthält nicht mehr alle Text...
function saveDragDropNodes() {
var saveString = "";
var uls = dragDropTopContainer.getElementsByTagName('UL');
for (var no = 1; no < uls.length; no++) { //LOoping through all <ul>
var lis = uls[no].getElementsByTagName('LI');
for (var no2 = 0; no2 < lis.length; no2++) {
if (saveString.length > 0) saveString = saveString + ";";
saveString = saveString + uls[no].id + '|' + lis[no2].id;
}
}
document.getElementById("<%=_saveContent.ClientID %>").innerHTML = saveString.replace(/;/g, ';<br>');
}
<div id="dhtmlgoodies_dragDropContainer">
<div id="dhtmlgoodies_listOfItems">
<div>
<p>
Available Items</p>
<ul id="allItems" runat="server">
</ul>
</div>
</div>
<div id="dhtmlgoodies_mainContainer">
<div>
<p>
Group 1</p>
<ul id="_ul1">
</ul>
</div>
<div>
<p>
Group 2</p>
<ul id="_ul2">
</ul>
</div>
</div>
<asp:Label ID="_lSave" runat="server" ForeColor="Red" EnableViewState="false" />
</div>
<div id="footer">
<span onmouseover="saveDragDropNodes()">
<asp:Button ID="_btnSave" runat="server" Text="Save Groups" OnClick="_btnSave_OnClick" /></span>
</div>
<ul id="dragContent">
</ul>
<div id="dragDropIndicator"></div>
<asp:Label ID="_saveContent" runat="server" />
Code Hinter:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
GetItems()
End If
End Sub
Private Sub GetItems()
Dim dt As DataTable = DbHelper.GetDataTableForSP("GetListOptions")
Dim index As Integer = 1
For Each _row As DataRow In dt.Rows
Dim _li As New HtmlGenericControl("li")
_li.ID = _row("ClassId")
_li.Attributes.Add("runat", "server")
_li.InnerHtml = String.Format("{0}) {1} {2}", index, _row("ClassId"), _row("ClassDescription1"))
allItems.Controls.Add(_li)
index += 1
Next
End Sub
Private Sub SaveGroups()
Dim str As String = _saveContent.Text /*No text here */
_lSave.Text = "Groups Saved!"
GetItems()
End Sub
- Sagen Sie, dass Sie brauchen, um Bearbeiten Sie die html-Datei auf den client und dann wollen schicken Sie es zurück auf den server?
- ja. Ich bin Bearbeiten von html über JavaScript, und ich bin der Hoffnung, dann speichern Sie die bearbeitete html-von der server-Seite code.
- Auf eine button-click-Ereignis? Oder was wollen Sie auslösen, das speichern auf dem server?
- Ich bin der Hoffnung, speichern Sie Sie auf eine Schaltfläche klicken, nachdem der Benutzer bewegt hat, alle Ihre Elemente, um die richtige <ul>
- Ich bearbeitet meine Antwort auf eine Schaltfläche click-Ereignis-handler.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur Inhalte, die zurück an den server sind die Werte von Formularfeldern. Siehe: Form submission.
Haben Sie zwei Möglichkeiten:
Hier ist ein Beispiel für letzteres:
Markup
Skript
Änderungen im content-element wird dann gespeichert in der versteckten input-element und geschickt auf dem server postback.
Dann in der code-behind-Sie können den Zugriff auf die HTML übergeben, zum Beispiel so:
Hoffe, das hilft.
Zunächst, änderungen im HTML-code wird nicht veröffentlicht, um Server standardmäßig. Zu erreichen per drag-n-drop-element, Folgen Sie bitte den Schritten unten
Hoffen, dass dies hilft.
Angeben
runat="server"
auf die Steuerelemente, die Sie brauchen, um den Zugriff von code-behind. Auch, vergessen SieClientID
zum Referenz-server-Steuerelemente in wenn javascript:runat="server"
. Hast du irgendwelche Javascript? Wenn ja, müssen Sie verwendenClientID
zu verweisen die Kontrollen in JavaScript. Können Sie nach dem code?Erste, fügen Sie die jQuery lib in Ihrer Kopfzeile. Fügen Sie es aus dem Google-CDN, als die meisten Ihrer Benutzer haben sollte zwischengespeichert.
Dann, nachdem das JS geändert hat, die HTML -, call sendToServer und es wird post von der html, die Sie wählen, um das servlet, die Sie eingeben.
Ich habe Sie jQuery verwenden, es ist eine sehr mächtige AJAX-Bibliothek. jQuery macht drei Dinge sehr gut, und einer von Ihnen ist AJAX. Innerhalb der post-Methode, der Dritte parameter ist eine anonyme Funktion. Das ist die Funktion, die aufgerufen wird nachdem die Daten erfolgreich an den server gesendet. So, ja. Probieren Sie es aus, lassen Sie es mich wissen.