【发布时间】:2009-06-16 15:27:17
【问题描述】:
我有一个使用 jQuery 的 ASP.NET 应用程序。我的 ASP.NET 应用程序根据数据库中的某些值动态生成一些 HyperLink 元素。当用户单击这些 HyperLink 元素之一时,我想显示一个 jQuery 对话框,允许用户编辑 HyperLink 的文本。我有这部分工作。
当用户单击“保存”按钮时,我需要读取超链接元素的值并将它们保存回数据库。目前,我得到了 HyperLink 元素的初始值。但是,我无法获得任何修改后的值。如何获取用户提供的值?我在这里提供了我的 .aspx 和 .aspx.cs 代码:
测试
报告:
<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>
这是我的代码隐藏:
公共部分类_默认:System.Web.UI.Page { 受保护的覆盖无效 OnInit(EventArgs e) { base.OnInit(e); 添加超链接(); }
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);
}
}
【问题讨论】:
-
我错过了您进行数据库更新的部分吗?你必须通过 jquery ajax 来做到这一点。
-
顺便说一句,戴夫:如果您使用输入字段(文本框),您的代码看起来会更清晰 - 看起来您只是在读取 10 个字符串。