2017-08-08 1 views
0

J'utilise un contrôle ListView au premier:Dans ASP.NET, pourquoi y a-t-il toujours une invite disant: «Il y avait une erreur de grammaire autour du '?' À propos de mon SQL? J'utilise la connexion SQL Server à ce moment

<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1" 
    ItemPlaceholderID="itemholder"> 
    <LayoutTemplate> 
     <asp:PlaceHolder ID="itemholder" runat="server"></asp:PlaceHolder> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <a href='newsdetail.aspx?nid=<%#Eval("news_id") %>'>      
     </a> 
    </ItemTemplate> 
</asp:ListView> 

contrôle Voici c'est SqlDataSource, mais quand je lance cette page, il me dit toujours que

Il y avait une erreur de grammaire autour du '?'

de mon SQL:

enter image description here

+0

Essayez '@ ncid' au lieu de'? '. – juharr

Répondre

1

Votre commande SqlDataSource nécessite paramètre nommé (s) à la place du paramètre anonyme (s) avec des points d'interrogation, essayez de modifier votre requête pour utiliser le paramètre nommé qui même que la requête nom du paramètre de chaîne (c.-à-@news_ncid):

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:wangkunConnectionString %>" 
    SelectCommand="select t_imgs.*, t_news.* from (t_imgs inner join t_news on t_imgs.img_id = t_news.news_imgtitle) where [email protected]_ncid"> 
    <SelectParameters> 
     <asp:QueryStringParameter Name="news_ncid" QueryStringField="ncid" Type="Int32" DefaultValue="1" /> 
    </SelectParameters> 
</asp:SqlDataSource> 

Référence:

Question Mark as Query Parameter?