【问题标题】:Ajax Editable label on ASP page with Masterpage带有 Masterpage 的 ASP 页面上的 Ajax 可编辑标签
【发布时间】:2011-09-19 00:39:36
【问题描述】:

我的网页上有一个带有 Masterpage 的 ASP 页面。在此页面上,我将有多个标签,旁边有一个编辑超链接。当用户单击编辑超链接时,我希望标签成为文本框,并在其旁边保存和编辑超链接。我一直在尝试这样做,并且在单击时无法使编辑超链接工作。这是我的 .js

/// <reference name="MicrosoftAjax.js"/>
// Global variables
var Label1, TextBox1, Edit1, Save1, Cancel1;

Sys.Application.add_init(AppInit);

function AppInit(sender) {
    Label1 = $get('labelWorkPhone');
    TextBox1 = $get('textboxWorkPhone');
    Edit1 = $get('hyperlinkEditWorkPhone');
    Save1 = $get('hyperlinkSaveWorkPhone');
    Cancel1 = $get('hyperlinkCancelWorkPhone');

    $addHandler(Edit1, "click", Edit1_Click);
    $addHandler(TextBox1, "blur", TextBox1_Blur);
    $addHandler(Save1, "click", Save1_Click);
    $addHandler(Cancel1, "click", Cancel1_Click);
}

function Edit1_Click() {
    TextBox1.value = Label1.innerHTML;

    Label1.style.display = 'none';
    TextBox1.style.display = '';

    TextBox1.focus();
}

function Save1_Click() {
    TextBox1.blur();
}

function Cancel1_Click() {
    Label1.style.display = '';
    TextBox1.style.display = 'none';
}

function TextBox1_Blur() {
    var labelUpdated;

    if (Label1.textContent == TextBox1.value)
        labelUpdated = false;
    else
        labelUpdated = true;

    Label1.innerHTML = TextBox1.value;

    TextBox1.style.display = 'none';
    Label1.style.display = '';

    if (labelUpdated)
        PageMethods.SetWorkPhone(TextBox1.value);
}

这是我的html

<td class="style1">
  <asp:Label ID="labelWorkPhone" runat="server" Text="labelWorkPhone"></asp:Label>
  <asp:TextBox ID="textboxWorkPhone" runat="server" Style="display: none;"></asp:TextBox>
</td>
<td class="style1">
  <asp:HyperLink CssClass="a" ID="hyperlinkEditWorkPhone" runat="server" Font-Underline="True" 
    ForeColor="Blue">Edit</asp:HyperLink>
  <asp:HyperLink CssClass="a" ID="hyperlinkSaveWorkPhone" runat="server" 
  Style="display: none;">Save</asp:HyperLink>
  <asp:HyperLink CssClass="a" ID="hyperlinkCancelWorkPhone" runat="server" 
  Style="display: none;">Cancel</asp:HyperLink>
</td>

<asp:ScriptManager ID="scriptManager1" runat="server" EnablePageMethods="true">
    <Scripts>
      <asp:ScriptReference Path="~/Scripts/WorkPhoneJavaEdit.js" />
</Scripts>
  </asp:ScriptManager>

提前谢谢你。

【问题讨论】:

  • 我不确定 $addHandler 方法,但它们的方法需要 onclick 和 onblur 吗?
  • 老实说我不知道​​。我本来打算写这篇文章的。我从未做过 ajax,最近才从桌面设计转向网页设计。我猜他们必须是 onclick 因为我需要在点击编辑时改变它。
  • 我的猜测是 ContentHolders 在运行时更改控件的名称会发生​​什么?有人知道该怎么做吗?

标签: .net html ajax c#-4.0


【解决方案1】:

尝试改变:

TextBox1.style.display = '';

TextBox1.style.display = 'block';

【讨论】:

  • 没有什么不同
猜你喜欢
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多