Проблема с ASP Repeater и источником данных SQL - PullRequest
0 голосов
/ 16 октября 2010

Вот моя таблица данных в моей базе данных SQL, и ниже это код для моего элемента управления Repeater:

ArticleID int NOT NULL,
ArticleTitle varchar(100) NOT NULL,
ArticleCategory int NOT NULL,
ArticleDate datetime NOT NULL,
ArticleContent text NOT NULL,
DeletedYN char(3) NOT NULL

<asp:Repeater runat="server" ID="rptArticles" DataSourceID="dsLatestArticles">
    <HeaderTemplate>
        <span class="title"><%#Container.DataItem("ArticleTitle")%></span><br />
        <span class="title3">Posted On: <%#Container.DataItem("ArticleDate")%></span>
    </HeaderTemplate>
    <ItemTemplate><p><%#Container.DataItem("ArticleContent")%></p></ItemTemplate>
    <FooterTemplate>
        <p class="RightAlign"><a href="/Articles/Read.aspx?i=<%#Container.DataItem("ArticleID") %>">Read more...</a></p>
    </FooterTemplate>
</asp:Repeater>

Когда я пытаюсь загрузить страницу, на которой это включено, я получаю сообщение об ошибке Object variable or With block variable not set.

Для справки, мой SqlDataSource настроен следующим образом:

<asp:SqlDataSource ID="dsLatestArticles" runat="server" 
    ConnectionString="<%$ ConnectionStrings:VBSiteConnectionString %>"        
    SelectCommand="SELECT [ArticleID], [ArticleTitle], [ArticleDate], [ArticleContent] FROM [Articles] WHERE ([DeletedYN] = @DeletedYN)">
    <SelectParameters>
        <asp:Parameter DefaultValue="No" Name="DeletedYN" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

Я не знаю, что я сделал не так, может кто-нибудь увидит проблему?Для дальнейшего ознакомления, вот моя трассировка стека:

[NullReferenceException: Object variable or With block variable not set.]
   Microsoft.VisualBasic.CompilerServices.Container..ctor(Object Instance) +510276
   Microsoft.VisualBasic.CompilerServices.NewLateBinding.InternalLateIndexGet(Object Instance, Object[] Arguments, String[] ArgumentNames, Boolean ReportErrors, ResolutionFailure& Failure) +88
   Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateIndexGet(Object Instance, Object[] Arguments, String[] ArgumentNames) +21
   ASP.default_aspx.__DataBind__control3(Object sender, EventArgs e) in D:\Development\Projects\Web\LogansArchive\Default.aspx:9
   System.Web.UI.Control.OnDataBinding(EventArgs e) +99
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +92
   System.Web.UI.Control.DataBind() +15
   System.Web.UI.Control.DataBindChildren() +211
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +102
   System.Web.UI.Control.DataBind() +15
   System.Web.UI.WebControls.Repeater.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) +124
   System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource) +323
   System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e) +51
   System.Web.UI.WebControls.Repeater.DataBind() +75
   System.Web.UI.WebControls.Repeater.EnsureDataBound() +55
   System.Web.UI.WebControls.Repeater.OnPreRender(EventArgs e) +15
   System.Web.UI.Control.PreRenderRecursiveInternal() +80
   System.Web.UI.Control.PreRenderRecursiveInternal() +171
   System.Web.UI.Control.PreRenderRecursiveInternal() +171
   System.Web.UI.Control.PreRenderRecursiveInternal() +171
   System.Web.UI.Control.PreRenderRecursiveInternal() +171
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842

Заранее спасибо!

1 Ответ

0 голосов
/ 16 октября 2010

В случае, если кто-то еще сталкивается с этой проблемой, вот решение, которое я нашел

Причина
Я извлекал данные из моего SqlDataSource в разделе <HeaderTemplate>моего контроля повторителя.Это то, что вызвало проблему.Я не уверен, почему, но суть в том, что это не сработает.

Решение
Поиск всех данных (т. Е. <%#Container.DataItem("Field1") %> block) must должен использоваться в секции <ItemTemplate> элемента управления Repeater.

...