2010-01-15 3 views
4

У меня есть два файла с именем TimeSheet.aspx.cs и TimSheet.aspx, код файла приведен ниже для вашей справки.Имя «GridView1» не существует в текущем контексте.

Когда я создаю приложение im get error «Имя« GridView1 »не существует в текущем контексте», даже я думал, что у меня есть элемент управления с идентификатором GridView1, и я добавил сервер «runat =».

Я не могу понять, что вызывает эту проблему. Может ли любая фигура произойти здесь.

Благодаря & С уважением,

======================================= 
TimeSheet.aspx.cs 
======================================= 
#region Using directives 
using System; 
using System.Data; 
using System.Configuration; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
using TSMS.Web.UI; 
#endregion 

public partial class TimeSheets: Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

     FormUtil.RedirectAfterUpdate(GridView1, "TimeSheets.aspx?page={0}"); 
     FormUtil.SetPageIndex(GridView1, "page"); 
     FormUtil.SetDefaultButton((Button)GridViewSearchPanel1.FindControl("cmdSearch")); 
    } 

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string urlParams = string.Format("TimeSheetId={0}", GridView1.SelectedDataKey.Values[0]); 
     Response.Redirect("TimeSheetsEdit.aspx?" + urlParams, true); 
    } 

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { 


    } 
} 
======================================================= 
TimeSheet.aspx 
======================================================= 
<%@ Page Language="C#" Theme="Default" MasterPageFile="~/MasterPages/admin.master" AutoEventWireup="true" CodeFile="TimeSheets.aspx.cs" Inherits="TimeSheets" Title="TimeSheets List" %> 

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">Time Sheets List</asp:Content> 
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 
     <data:GridViewSearchPanel ID="GridViewSearchPanel1" runat="server" GridViewControlID="GridView1" PersistenceMethod="Session" /> 
     <br /> 
     <data:EntityGridView ID="GridView1" runat="server"   
       AutoGenerateColumns="False"     
       OnSelectedIndexChanged="GridView1_SelectedIndexChanged" 
       DataSourceID="TimeSheetsDataSource" 
       DataKeyNames="TimeSheetId" 
       AllowMultiColumnSorting="false" 
       DefaultSortColumnName="" 
       DefaultSortDirection="Ascending"  
       ExcelExportFileName="Export_TimeSheets.xls" onrowcommand="GridView1_RowCommand"   
      > 
      <Columns> 
       <asp:CommandField ShowSelectButton="True" ShowEditButton="True" />    
       <asp:BoundField DataField="TimeSheetId" HeaderText="Time Sheet Id" SortExpression="[TimeSheetID]" ReadOnly="True" /> 
       <asp:BoundField DataField="TimeSheetTitle" HeaderText="Time Sheet Title" SortExpression="[TimeSheetTitle]" /> 
       <asp:BoundField DataField="StartDate" DataFormatString="{0:d}" HtmlEncode="False" HeaderText="Start Date" SortExpression="[StartDate]" /> 
       <asp:BoundField DataField="EndDate" DataFormatString="{0:d}" HtmlEncode="False" HeaderText="End Date" SortExpression="[EndDate]" /> 
       <asp:BoundField DataField="DateOfCreation" DataFormatString="{0:d}" HtmlEncode="False" HeaderText="Date Of Creation" SortExpression="[DateOfCreation]" /> 
       <data:BoundRadioButtonField DataField="Locked" HeaderText="Locked" SortExpression="[Locked]" /> 
       <asp:BoundField DataField="ReviewedBy" HeaderText="Reviewed By" SortExpression="[ReviewedBy]" /> 
       <data:HyperLinkField HeaderText="Employee Id" DataNavigateUrlFormatString="EmployeesEdit.aspx?EmployeeId={0}" DataNavigateUrlFields="EmployeeId" DataContainer="EmployeeIdSource" DataTextField="LastName" /> 

      </Columns> 
      <EmptyDataTemplate> 
       <b>No TimeSheets Found!</b> 
      </EmptyDataTemplate> 
     </data:EntityGridView> 
     <asp:GridView ID="GridView2" runat="server"> 
    </asp:GridView> 
     <br /> 
     <asp:Button runat="server" ID="btnTimeSheets" OnClientClick="javascript:location.href='TimeSheetsEdit.aspx'; return false;" Text="Add New"></asp:Button> 
     <data:TimeSheetsDataSource ID="TimeSheetsDataSource" runat="server" 
      SelectMethod="GetPaged" 
      EnablePaging="True" 
      EnableSorting="True" 
      EnableDeepLoad="True" 
      > 
      <DeepLoadProperties Method="IncludeChildren" Recursive="False"> 
       <Types> 
        <data:TimeSheetsProperty Name="Employees"/> 
        <%--<data:TimeSheetsProperty Name="TimeSheetDetailsCollection" />--%> 
       </Types> 
      </DeepLoadProperties> 
      <Parameters> 
       <data:CustomParameter Name="WhereClause" Value="" ConvertEmptyStringToNull="false" /> 
       <data:CustomParameter Name="OrderByClause" Value="" ConvertEmptyStringToNull="false" /> 
       <asp:ControlParameter Name="PageIndex" ControlID="GridView1" PropertyName="PageIndex" Type="Int32" /> 
       <asp:ControlParameter Name="PageSize" ControlID="GridView1" PropertyName="PageSize" Type="Int32" /> 
       <data:CustomParameter Name="RecordCount" Value="0" Type="Int32" /> 
      </Parameters> 
     </data:TimeSheetsDataSource> 

</asp:Content> 

ответ

5

Проблема может заключаться в том, что GridView1 не добавляется автоматически в файл designer.cs. Если это случай, добавьте его в конструктор вручную.

+0

Я преобразовал в веб-проект, IDE затем создал designer.cs, теперь он работает благодаря. – sameer

2

Предполагая, что проект WebSite проверить, что при создании его вы не получите предупреждение, как:

Генерация дизайнерского файла не удался: [Причина ошибки]

Кажется, что вы не регистрируете пользовательский контроль EntityGridView. См. Register directive, чтобы узнать, как вы можете это сделать.

+0

Я сделал это в web.config, это должно занять место регистрации. \t \t \t \t <добавить tagPrefix = "данные" пространство имена = "TSMS.Web.Data" сборка = "TSMS.Web" /> \t \t \t \t <добавить tagPrefix = "данные" пространство имен = "TSMS.Web .UI "assembly =" TSMS.Web "/> \t \t \t sameer

+0

Вы проверили Список ошибок для предупреждений после чистой сборки решения? –

0

Он вложен, поэтому некоторые вещи не происходят автоматически.

  1. Вы, возможно, придется вручную добавить его в конструкторе, либо (в VB) явно использовать ручки ключевое слово или (в C#) в явном виде проволоки с «+ =» оператора.
  2. Убедитесь, что все события или явно указано в контрольной наценке

Поскольку я вижу, вы перечисляете событие в явном виде, я бы проверить дизайнер.

+0

Привет, У меня нет файла-конструктора. Мне нужно создать one.I получил этот код, сгенерированный с использованием шаблона .nettier с использованием генератора кода кода. – sameer

+0

В вашем решении найдите «'' 'GridView1 control.' 'И, надеюсь, TimeSheets.designer.aspx.cs. Да, иногда IDE не хочет позволять вам легко добраться до нее по какой-то причине. –

0

У меня была эта же проблема в Visual Studio 2010. Файл design.cs был правильно сгенерирован. Я закрыл Visual Studio и снова открыл его. Это разрешило эту проблему для меня (после большого разочарования).

0

Я не знаю, поможет ли это, но я столкнулся с подобной ситуацией.

Ситуация: Я включил некоторый код из измененного шаблона веб-проекта asp.net в мой проект - в частности, разметку входа. По какой-то причине одно из элементов управления «Текстовое поле» UserName отказывается признать в дизайнере. Как ни странно, контроль «UserNameLabel» на следующей строке разметки признается:

<%@ Page Language="C#" AutoEventWireup="True" CodeBehind="Logon.aspx.cs" MasterPageFile="~/Site.master" Inherits="SimpleWebApp.Logon" %> 

<asp:Content ID="LogonRegister" ContentPlaceHolderID="MainContent" runat="server"> 
    <div></div> 
     <table align="center"> 
     <tr> 
      <td valign="top"> 
       *<asp:TextBox ID="TextBox1" runat="server" CssClass="textEntry"></asp:TextBox>* 
       <asp:Login ID="LoginUser" runat="server" EnableViewState="true" RenderOuterTable="false"> 
        <LayoutTemplate> 
         <span class="failureNotification"> 
          <asp:Literal ID="FailureText" runat="server"></asp:Literal> 
         </span> 
         <asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="failureNotification"/> 
         <div class="accountInfo"> 
          <fieldset class="login"> 
           <legend>Log In</legend> 
           <p> 
            **<asp:Label ID="lblUserNameLabel" runat="server">Username:</asp:Label>** 
            ***<asp:TextBox ID="UserName" runat="server" CssClass="textEntry"></asp:TextBox>*** 
           </p> 
... 

Что я пробовал: Я перезапущен БВ 2010, удалили файл дизайнера и воссоздал его через преобразование страницы в веб-приложение изменилось имя текстового поля, удалено и восстановлено текстовое поле.

Я решил немного поэкспериментировать и обнаружил, что добавление типичного текстового поля, расположенного вне тега asp: Login, распознается, а добавление его только внутри этого тега оставляет его непризнанным в дизайнере.

Возможно, это поможет мне или кому-то еще собрать все, что может произойти.

Кто-нибудь знает, что может вызвать подобное поведение в asp: теге входа?

0

Для получения близких ответов см. Несколько аналогичный вопрос, How do you force Visual Studio to regenerate the .designer files for aspx/ascx files?.

@sameer: ​​Мне было бы интересно услышать, если вы попытались заменить CodeFile="TimeSheets.aspx.cs" на CodeBehind="TimeSheets.aspx.cs" перед преобразованием проекта.

0

Я знаю, что это старая тема, но я просто боролся с проблемой, подобной этому. Через пару дней я понял, что у меня есть резервная копия страницы проблем и кода в моем проекте. Я продолжал получать ошибку «не существует в текущем контексте» во время компиляции объектов, размещенных на новой странице, хотя intellisense распознал их. Я думаю, что VS путался из-за дублирования страниц в пространстве имен по умолчанию. Как только я избавился от резервного копирования, я волшебно прекратил получать ошибки.

+0

Этот ответ подсказывал мне. Я модифицировал разметку главной страницы, у которой есть копия (с небольшой разницей). Оба имеют общий код. При модификации одной из двух основных страниц я испытывал «... не существует в текущем контексте» при попытке создания (хотя Intellisense работал). После изменения разметки копии (для того, чтобы обе страницы имели одинаковые элементы управления), ошибка исчезла. Fwiw, это было на веб-сайте (а не в веб-приложении). – bvgheluwe

0

У меня была такая же проблема, ни одно из решений не работало для меня. Я понял, не тратя слишком много времени, что многим страницам ASPX в разделе «Администратор» присваивается то же имя класса, что и сущности в файлах сущности проекта. Кроме того, на каждой из страниц указано пространство имен Entities, вызывающее конфликты, поскольку после добавления пространства имен сущностей в директивы use возникли конфликты пространства имен. Я прошел и добавил «Страница» на каждую страницу ASPX, перекомпилировал и все работало нормально.

Я знаю, что на эту тему уже был дан ответ, но я хотел включить это описание в случае, если есть другие, у которых есть эта же проблема, и ни одно из вышеперечисленных решений не работает, чтобы дать им что-то еще, что может быть проблемой.

У меня было 21 страниц, чтобы изменить в моем проекте, вот пример использования UserEntity и/UserEntity.aspx Admin:

в UsersEntity.aspx титульного листа стороны ASPX, изменено:

<%@ Page Language="C#" 
     Theme="Default" 
     MasterPageFile="~/MasterPages/admin.master" 
     AutoEventWireup="true" 
     Inherits="UsersEntity" 
     Title="UsersEntity" 
     Codebehind="UsersEntity.aspx.cs" 
%> 

к:

<%@ Page Language="C#" 
     Theme="Default" 
     MasterPageFile="~/MasterPages/admin.master" 
     AutoEventWireup="true" 
     Inherits="UsersEntityPage" 
     Title="UsersEntity" 
     Codebehind="UsersEntity.aspx.cs" 
%> 

в UsersEntity.aspx.cs коде позади, я изменил:

public partial class UsersEntity : System.Web.UI.Page 

к:

public partial class UsersEntityEntityPage : System.Web.UI.Page 

и в UsersEntity.aspx.designer.cs (конструктор страницы): Эта страница автоматически получил изменилось, когда я изменил код позади страницы:

public partial class UsersEntityPage { 

Я сделал это для каждой из других оскорбительных страниц, которые были ими, кроме страниц «Изменить».

- Думаю, я мог бы просто удалить директиву using в пространство имен Entity, но я действительно хочу иметь доступ к этому на своих страницах, и я думаю, что для классов страниц не хватает то же имя, что и мои классы сущностей. Это вызывает у меня путаницу, чтобы он был таким.

0

копия _ .aspx и вставьте его на страницу _ .aspx.cs.

Если нет, то импортируйте пространства имён вверх.

  1. <% @ Page Language = "C#" AutoEventWireup = "истина" %> <% @ Import пространство имен = "System.Data" %> <% @ Import пространство имен = "System.Data.SqlClient" %>
0

У меня была эта проблема раньше, когда я «добавил» существующий файл (.aspx + .aspx.cs) в проект, а файл-конструктор не обновил сам. Я пробовал много/все, что было написано здесь, но я нахожу, что создаю новый файл, копируя код кода, а затем перестраивая код, а затем перестраивая, по сути, делает трюк. Да, это боль в * в зависимости от размера файла (ов), с которым вы работаете, но это обычно происходит, когда я хочу быстро протестировать какой-то демо-код, с которым я столкнулся (какой-то новый проект и т. Д.) и бросить его в мой локальный VS.

0

Я обнаружил, что в файле designer.cs было неправильное имя ссылки на файл. Это было имя файла кода с добавленным 1 до конца. Я удалил 1, и код работал без ошибок. До этого я удалил и перестроил файл дизайнера без разрешения.

Смежные вопросы