Ich habe eine ASP.NET-Anwendung, die jQuery verwendet. Meine ASP.NET-Anwendung generiert dynamisch einige HyperLink-Elemente basierend auf einigen Werten in einer Datenbank. Wenn ein Benutzer auf eines dieser HyperLink-Elemente klickt, möchte ich ein jQuery-Dialogfeld anzeigen, mit dem der Benutzer den HyperLink-Text bearbeiten kann. Ich habe diesen Teil in Arbeit.ASP.NET + jQuery + Dynamisch erstellte HyperLink-Steuerelemente
Wenn ein Benutzer auf die Schaltfläche "Speichern" klickt, muss ich die Werte der HyperLink-Elemente lesen und sie in der Datenbank speichern. Derzeit erhalte ich die Anfangswerte der HyperLink-Elemente. Ich kann jedoch keine modifizierten Werte erhalten. Wie bekomme ich die Werte, die vom Benutzer zur Verfügung gestellt wurden? Ich habe meine aspx und aspx.cs Code hier zu finden:
Test
Bericht:
<div id="recommendDialog" title="Number">
<table border="0" cellpadding="0" cellspacing="0">
<tr><td>Number</td></tr>
<tr><td><input id="optionName" type="text" /></td></tr>
</table>
</div>
<asp:Button ID="saveButton" runat="server" Text="Save" OnClick="saveButton_Click" />
</div>
</form>
<script type="text/javascript">
var editingID = null;
$("#recommendDialog").dialog({
autoOpen: false,
height: 200,
modal: true,
buttons: {
Cancel: function() {
$(this).dialog('close');
},
'OK': function() {
var newValue = $("#optionName").val();
if (editingID != null) {
$(editingID).attr("name", newValue);
$(editingID).html(newValue);
}
$(this).dialog('close');
}
},
close: function() {
}
});
function update_Click(link) {
editingID = "#" + link.id;
$("#optionName").val(link.name);
$('#recommendDialog').dialog('open');
}
</script>
Hier ist mein Code-behind:
public partial class _Default: System.Web.UI.Page { protected override void OnInit (EventArgs e) { base.OnInit (e); AddHyperlinks(); }
protected void Page_Load(object sender, EventArgs e)
{}
protected void saveButton_Click(object sender, EventArgs e)
{
foreach (TableCell cell in reportTable.Rows[0].Cells)
{
HyperLink h = (HyperLink)(cell.Controls[0]);
string newValue = h.Attributes["name"];
// Save value to database here. newValue does not show
// changed values.
Console.WriteLine(newValue);
}
}
private void AddHyperlinks()
{
TableRow row = new TableRow();
for (int i = 1; i < 11; i++)
{
HyperLink hyperlink = new HyperLink();
hyperlink.NavigateUrl = "#";
hyperlink.Text = i.ToString();
hyperlink.Attributes.Add("id", "h" + i);
hyperlink.Attributes.Add("name", i.ToString());
hyperlink.Attributes.Add("onclick", "update_Click(this);");
AddLinkButtonToRow(hyperlink, row);
}
reportTable.Rows.Add(row);
}
private void AddLinkButtonToRow(HyperLink linkButton, TableRow row)
{
TableCell cell = new TableCell();
cell.Controls.Add(linkButton);
row.Cells.Add(cell);
}
}
Fehle ich den Teil, wo Sie die Datenbank aktualisieren? Sie müssen dies durch jQuery Ajax tun. – ScottE
Übrigens, Dave: Ihr Code würde viel sauberer aussehen, wenn Sie Eingabefelder (TextBox) benutzen - es sieht so aus, als ob Sie nur 10 Strings lesen. – Kobi