【发布时间】:2010-08-05 09:32:20
【问题描述】:
我制作了这个发票页面。 有一个生成表的中继器。 有发票项目描述进入用 div 标签封装的 td 标签 像这样:
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr>
<td class="griditem text">
<div class="invoiceDescription" id='<%# "item-" + Eval("ID") %>' value='<%# Eval("ID") %>' onclick="InvoiceItemClicked(this);">
<%# Eval("Description") %>
</div>
</td>
<td class="gridnumb text r">
<%# String.Format("{0:n}", Eval("Quantity"))%>
</td>
<td class="gridnumb text r">
<%# String.Format("{0:c}", Eval("UnitCost"))%>
</td>
<td class="gridnumb text r">
<%# String.Format("{0:c}", Eval("Total"))%>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
如果您看到第一行,我将调用 javascript onclick。函数是这样的(使用jQuery):
function InvoiceItemClicked(elm) {
var textbox = document.createElement('input');
textbox.setAttribute('type', 'text');
textbox.value = $(elm).text();
$(elm).html(textbox);
}
这是我第一次尝试这样做,并且在第一枪中就奏效了。它将行转换为文本框,其中设置了相同的文本。但是问题是当生成的文本框被点击(焦点)时,里面的文本消失了。
我还将感谢任何其他进行此内联编辑的最佳做法。然后我需要通过网络服务等更新项目。
提前致谢。
【问题讨论】:
标签: javascript asp.net jquery ajax inline-editing