2014-02-24 118 views
1

使用GridView:Update Panel時出錯。 「Element'BoundField'不是已知元素如果網站中存在編譯錯誤,或者缺少web.config文件,則可能發生這種情況。」爲什麼這個錯誤?以及如何解決?使用GridView更新面板時出錯......?

標記:

<asp:ScriptManager ID="ScriptManager2" runat="server"></asp:ScriptManager> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <asp:GridView ID="GridView1" CssClass="GridGis" runat="server" 
     AutoGenerateColumns="False" PageSize="5" OnPageIndexChanging="GridView1_PageIndexChanging" 
     AllowPaging="True"> 
     <columns> 
      <asp:BoundField DataField="nome" HeaderText="Nome" /> 
     </columns> 
    </asp:GridView> 
</asp:UpdatePanel> 
+0

請發佈您的GridView的相關代碼/標記。 – mason

+0

」 – Tiago

+1

請更新與相關的代碼/標記你的問題,它不如果您將其作爲評論發佈,則工作得很好。 – mason

回答

1

你需要把GridViewContentTemplate

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:GridView ID="GridView1" CssClass="GridGis" 
      runat="server" AutoGenerateColumns="False" PageSize="5" 
      OnPageIndexChanging="GridView1_PageIndexChanging" AllowPaging="True"> 
      <Columns> 
       <asp:BoundField DataField="nome" HeaderText="Nome" /> 
      </Columns> 
     </asp:GridView> 
    </ContentTemplate> 
</asp:UpdatePanel> 

編輯:下面是我已經測試你的代碼:

在標記我添加一個HTML輸入,它的內容在部分回傳後不會改變。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="PostbackTest.WebForm1" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div> 
      <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
      <asp:UpdatePanel ID="upd" runat="server"> 
       <ContentTemplate> 
        <asp:GridView ID="GridView1" CssClass="GridGis" 
         runat="server" AutoGenerateColumns="False" PageSize="3" 
         OnPageIndexChanging="GridView1_PageIndexChanging" AllowPaging="True"> 
         <Columns> 
          <asp:BoundField DataField="nome" HeaderText="Nome" /> 
         </Columns> 
        </asp:GridView> 
       </ContentTemplate> 
      </asp:UpdatePanel> 
      <input type="text" id="input" /> 
     </div> 
    </form> 
</body> 
</html> 

在代碼中我填充了Page_Load上的虛擬數據的gridview。這裏是代碼:

using System; 
using System.Collections.Generic; 
using System.Web.UI.WebControls; 

namespace PostbackTest 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       GridView1.DataSource = new List<MyClass>(){new MyClass{ID=1, NOME="ad"}, 
        new MyClass{ID=2, NOME="sdf"}, 
        new MyClass{ID=3, NOME="fgdf"}, 
        new MyClass{ID=4, NOME="fgd"}, 
        new MyClass{ID=5, NOME="aghfgd"}, 
        new MyClass{ID=6, NOME="jhkj"}}; 
       GridView1.DataBind(); 
      } 
     } 

     protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
     { 

     } 

     private class MyClass 
     { 
      public int ID { get; set; } 
      public string NOME { get; set; } 
     } 
    } 
} 
+0

好吧,錯誤消失了,但繼續導致回發頁面,我做了更多的事情比腳本管理器和gridview更新面板內?我做了更多的配置?當我更新gridview時,他們仍然在頁面上發回 – Tiago

+0

您可以設置'UpdateMode ='Conditional'''。我已經更新了我的答案。 – afzalulh

+0

UpdatePanel執行部分回發。所以,如果你簽入代碼,IsPostBack應該是true,並不意味着整個頁面被回傳。你可以看看[這個文檔](http://www.asp.net/ajax/documentation/live/overview/updatepaneloverview.aspx)瞭解它是如何工作的。 – afzalulh