2010-03-09 62 views
0

後沒有我有一個空div網頁,ID =「PreAcquisitionDiv」 RUNAT =「服務器」innerHTML的作品是第一次,但是回傳

在C#代碼隱藏在Page_Load中,我建立一個表並將其設置爲PreAcquisitionDiv.InnerHtml

我的頁面顯示確定。我導致一個PostBack,打算改變表中的數據。在代碼中,PreAcquisitionDiv.InnerHtml確實會改變,但我第一次放在那裏的表格仍然會顯示在頁面上。

我已經看到關於使用InnerHtml的一些警告,但我看到的替代品的例子是JavaScript。

我使用IE 8,但我觀察到Chrome中的相同行爲。

謝謝你的任何建議!

例如,此代碼在第一次顯示頁面時顯示「SomeStuff」;那麼即使InnerHtml被改變,回傳後仍然是「SomeStuff」。

protected void Page_Load(object sender, EventArgs e) 
{ 
    StringBuilder html = new StringBuilder(@"<TABLE BORDER='1' WIDTH='100%'>"); 
    if(!IsPostBack) 
    { 
     html.Append(@"<TR><TD>SomeStuff</TD></TR>"); 
    } 
    else 
    { 
     html.Append(@"<TR><TD>Some New Stuff</TD></TR>"); 
    } 
    html.Append(@"</TABLE>"); 
    this.PreAcquisitionDiv.InnerHtml = html.ToString(); 
} 
+0

你追加到innerHTML的,而不是取代它? – Kirschstein 2010-03-09 17:50:40

+0

innerHtml也是javascript :)你可以發佈你的代碼嗎?如果沒有它,甚至很難猜測發生了什麼。 – 2010-03-09 17:51:47

+0

編輯併發布了上面的代碼。 – 2010-03-09 21:00:22

回答

0

如果您要更改回發的HTML,您是否正在運行函數以將其設置回發郵件?

更新:我複製並粘貼您的代碼,它對我來說工作正常。這裏是我的全部代碼背後:

using System; 
using System.Collections; 
using System.Configuration; 
using System.Data; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Xml.Linq; 
using System.Text; 

namespace Sandbox 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      StringBuilder html = new StringBuilder(@"<TABLE BORDER='1' WIDTH='100%'>"); 
      if (!IsPostBack) 
      { 
       html.Append(@"<TR><TD>SomeStuff</TD></TR>"); 
      } 
      else 
      { 
       html.Append(@"<TR><TD>Some New Stuff</TD></TR>"); 
      } 
      html.Append(@"</TABLE>"); 
      this.PreAcquisitionDiv.InnerHtml = html.ToString(); 
     } 

     protected void btnTest_OnClick(object sender, EventArgs e) 
     { 
     } 
    } 
} 

這裏是我整個的ASPX頁面

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Sandbox._Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div id="PreAcquisitionDiv" runat="server"> 

    </div> 
    <asp:Button ID="btnTest" runat="server" OnClick="btnTest_OnClick" /> 
    </form> 
</body> 
</html> 
+0

是的,我正在運行該方法,並且,當我到達聲明時,this.PreAcquisitionDiv.InnerHtml = html.ToString();該值確實改變。只是,當頁面重新顯示時,第一個值仍然存在,而新的值不存在。 – 2010-03-09 18:51:05

+0

發表一些代碼,不能沒有更進一步。 – 2010-03-09 19:14:06

+0

編輯並張貼在上面;謝謝。 – 2010-03-09 21:47:29

相關問題