2010-10-16 31 views
0

Voici ma table de données dans mon DB SQL, et au-dessous qui est le code de mon contrôle Repeater:problème avec ASP répéteur et données SQL Source

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> 

Lorsque je tente de charger la page c'est, je obtenir une erreur indiquant Object variable or With block variable not set.

Pour référence, mon SqlDataSource est configuré comme suit:

<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> 

Je ne sais pas ce que je l'ai fait mal ici, peut-on voir un problème? Pour référence plus loin, voici mon Stack Trace:

[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 

Merci à l'avance!

Répondre

0

Dans le cas où quelqu'un d'autre vient à travers ce problème, voici une solution que j'ai trouvé

La cause
je tirais les données de mon SqlDataSource dans la section de mon contrôle Repeater. C'est ce qui a causé le problème. Je ne sais pas pourquoi, mais le fait est que cela ne marchera pas.

La solution
Toutes récupération de données (à savoir bloc <%#Container.DataItem("Field1") %>) doit être utilisé dans la section <ItemTemplate> de la commande de répéteur.