ASP.NET не может получить доступ к данным, созданным при загрузке страницы из встроенного кода - PullRequest
0 голосов
/ 28 октября 2008

В моем событии Page_Load файла codebehind я загружаю данные в таблицу данных. На моей странице .aspx у меня есть встроенное кодирование, я хочу отобразить некоторые данные из этой таблицы данных. Но когда я запускаю программу, Он показывает ошибку типа «Ошибка 64 Использование неназначенной локальной переменной 'dtblChild'" dtblChild - мой объект DataTable

Page_Load в codebehind выполняется после загрузки элементов формы?

Ответы [ 6 ]

1 голос
/ 28 октября 2008

Встроенный код выполняется на этапе рендеринга.

в жизненном цикле страницы, рендеринг происходит намного позже, чем загрузка

0 голосов
/ 28 октября 2008

Свяжите ваш dtblChild с повторителем (или DataGrid), как предложено выше. Это будет легче поддерживать. Затем заполните DataTable в отдельной функции и привяжите его к повторителю. Вызывайте эту функцию в Page_Load, когда вам нужно.

<table>
<asp:Repeater ID="rptSearchResults" runat="server">
    <ItemTemplate>
        <tr>
            <td><%#DataBinder.Eval(Container.DataItem, "ColumnName") %></td>
        </tr>
    </ItemTemplate>
</asp:Repeater>
</table>

функция LoadData () {

rptSearchResults.DataSource = dtblChild;

rptSearchResults.DataBind ();

}

0 голосов
/ 28 октября 2008

Более "ASP.Net-ish" способ сделать это так:

<asp:Repeater ID="MyRepeater" runat="server" DataSource="dtblChild">
    <ItemTemplate>
        <tr><td>Thisss</td></tr>
    </ItemTemplate>
</asp:Repeater>

Вам, вероятно, также необходимо объявить ObjectDatasource, чтобы обернуть вашу таблицу данных, чтобы сделать ее совместимой с ретранслятором.

0 голосов
/ 28 октября 2008

Это мое встроенное кодирование

<% foreach (DataRow dr в dtblChild.Rows) { %>

Thissss <% </p>
  }

%>

в моем коде за Page_Load я заполняю данные в объект DataTable (dtblChild)

0 голосов
/ 28 октября 2008

Для этого попробуйте использовать элемент управления ретранслятором или обзор данных, а не <% %> пчелиные укусы. Слишком много встроенного кода не очень хорошо сочетается с кодом позади файлов: вы можете получить неожиданные результаты. Это может сработать, если вы действительно знаете, что делаете, но вы должны быть осторожны, и я бы не рекомендовал это никому новичку в ASP.Net.

Я также рекомендую вам потратить некоторое время и ознакомиться с жизненным циклом ASP.Net Page .

0 голосов
/ 28 октября 2008

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

Я думаю, что ваш вопрос указывает на некоторые более глубокие проблемы с тем, как вы привязываетесь к странице.

Можете ли вы опубликовать код?

...