我有一个带标签的 gridview,还有一些 JavaScript 和 jQuery 使标签可编辑。
但是,当我在后面的代码中回发和调试时,我没有看到变化。
我怎样才能在服务器上获取零钱?
<asp:GridView ID="gvGroups" runat="server" AutoGenerateColumns="False"
CssClass="table table-hover table-striped" GridLines="None" >
<Columns>
<asp:TemplateField HeaderText="Name" SortExpression="GroupDescription">
<ItemTemplate>
<asp:Label ID="lblName" CssClass="edit" runat="server" Text='<%# Eval("GroupDescription") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
function makeLabelsEditable() {
$(".edit").focusout(function () {
setLabel(this);
});
$(".edit").click(function () {
editLabel(this);
});
}
function editLabel(source) {
source.innerHTML = '<input type="text" maxlength="40" value="' + source.innerHTML + '"/>';
$(source).unbind('click');
source.children[0].focus()
}
function setLabel(source) {
if (source.children[0].value != '') {
$(source).click(function () {
editLabel(this);
});
source.innerHTML = source.children[0].value;
}
}
最佳答案
Label
不会回发到服务器。它们旨在只读并呈现为跨度。如果您希望它回发,最简单的做法是制作一个具有相同值的 Hidden
控件,当您编写代码以允许编辑标签时,请确保将编辑后的值写入隐藏
。 Hidden
将回发到服务器,然后您可以读取该值。
您正在交换一个“动态”TextBox
,因此服务器对您所做的输入控件一无所知。您可以阅读原始发布的参数来获取值,但拥有一个您可以写入并知道它将具有您需要的值的静态控件会更容易。
关于c# - gridview 中的标签更改但更改不回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14732968/