Glossary.aspx
以下是该网站的HTML代码。我计划添加一个登录名,以便人们可以根据活动目录编辑表。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title spellcheck="true">Lexis Nexis Glossary</title>
</head>
<body>
<form id="form1" runat="server">
<div style="margin-left: 720px">
</div>
<asp:SqlDataSource ID="TedGlossary" runat="server" ConnectionString="<%$ ConnectionStrings:Glsry_Taylor %>" SelectCommand="SELECT [TermText], [DefNbr], [DefVerNbr], [DefText], [AmplifyingExplanationText], [SeeAlsoText], [AuthoritativeSrcText], [ScopeName], [DomnName], [GovernanceStateName], [LastUpdtTimestamp] FROM [Glossary] ORDER BY [TermText]"></asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False"
" DataKeyNames="TermText,DefNbr,DefVerNbr" DataSourceID="TedGlossary" EnableSortingAndPagingCallbacks="True">
<Columns>
<asp:BoundField DataField="TermText" HeaderText="Term" ReadOnly="True" SortExpression="TermText" />
<asp:BoundField DataField="DefNbr" HeaderText="Definition #" ReadOnly="True" SortExpression="DefNbr" />
<asp:BoundField DataField="DefVerNbr" HeaderText="Definition Vers #" ReadOnly="True" SortExpression="DefVerNbr" />
<asp:BoundField DataField="DefText" HeaderText="Definition" SortExpression="DefText" />
<asp:BoundField DataField="AmplifyingExplanationText" HeaderText="Amplifying Explanation" SortExpression="AmplifyingExplanationText" />
<asp:BoundField DataField="SeeAlsoText" HeaderText="See Also" SortExpression="SeeAlsoText" />
<asp:BoundField DataField="AuthoritativeSrcText" HeaderText="Authoritative Source" SortExpression="AuthoritativeSrcText" />
<asp:BoundField DataField="ScopeName" HeaderText="Scope Name" SortExpression="ScopeName" />
<asp:BoundField DataField="DomnName" HeaderText="Domn Name" SortExpression="DomnName" />
<asp:BoundField DataField="GovernanceStateName" HeaderText="Governance State" SortExpression="GovernanceStateName" />
<asp:BoundField DataField="LastUpdtTimestamp" HeaderText="Last Update" SortExpression="LastUpdtTimestamp" />
</Columns>
</asp:GridView>
</form>
<script>
$(function () {
$('#<%=GridView1.ClientID%>').dataTable();
});
</script>
</body>
</html>
Glossary.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Home
{
public partial class Glossary : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
GridView1.PreRender += new EventHandler(GridView1_PreRender);
}
protected void GridView1_PreRender(object sender, EventArgs e)
{
if (GridView1.Rows.Count > 0)
{
//forces grid to render thead/th elements
GridView1.UseAccessibleHeader = true;
GridView1.HeaderRow.TableSection = TableRowSection.TableHeader;
}
}
}
}
我收到的错误是GridView 1在其当前上下文中不存在。我不确定为什么会这样。任何见解将不胜感激。
答案 0 :(得分:2)
您似乎错过了网页表单顶部的页面声明。
你应该有这样的东西,用来连接前端和后端。这基本上告诉设计视图支持类文件的位置。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Glossary.aspx.cs" Inherits="Glossary" %>
如果&#34;可能&#34;需要成为这一个 - 因为我看到你在代码隐藏中有一个命名空间
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Glossary.aspx.cs" Inherits="Home.Glossary" %>
这会解释您所看到的错误,因为您的.aspx.cs文件在没有该网页指令的情况下对设计视图一无所知。
答案 1 :(得分:0)
对于初学者,请删除DataKeyNames
的{{1}}属性之前的额外双引号(“)。
答案 2 :(得分:0)
这可能是由GridView1未在Glossary.aspx.designer.cs文件中声明引起的。可能需要首先创建文件和/或可能需要手动添加对GridView1的引用。
示例Glossary.aspx.designer.cs:
public partial class Glossary {
protected global::Global.System.Web.UI.WebControls.GridView GridView1;
}