c# - gridview 中的标签更改但更改不回发

标签 c# javascript asp.net

我有一个带标签的 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/

相关文章:

c# - SqlConnection 构造函数中无法识别的转义序列

Javascript对象(改变颜色)

javascript - 在 Pyppeteer (Python Puppeteer) 中通过文本选择按钮

c# - asp c# 自定义类中的动态按钮事件

c# - 为什么我的 ASP.NET 部署服务器不使用配置的环境名称?

c# - 将 C# 反射代码移植到 Metro-Ui

c# - 对从 Linq2Sql 的 var 中获取 int 感到困惑

c# - .NET Core 2 中使用 CaSTLe DynamicProxy 的 Autofac 方法级拦截

javascript - jQuery 在 jsfiddle 中有效,但在 html 文件中无效?

c# - 如何间隔刷新页面的一部分