1

我的 asp.net 页面有一个 C# SQL 查询,它使用存储在我的页面会话中的值(称为 tournyName)查询数据库。我有查询工作,我正在使用 SqlDataReader(称为 myReader)来读取查询结果。但是,我无法将结果显示在我页面的 HTML 区域。我一直在拼凑从其他人的问题中找到的一些代码,此时的代码不完整。它看起来像这样:

C# (snppit):

    conn.Open();
    query = "SELECT GamePlayer1 AS [Player 1], GamePlayer2 AS [Player 2], GamePlayer1Score AS [Score1], GamePlayer2Score AS [Score2] FROM Games WHERE (TournyName = '@TournyName')";

    com = new SqlCommand(query, conn);

    com.Parameters.Add(new SqlParameter("@TournyName", SqlDbType.VarChar, 200));
    com.Parameters["@TournyName"].Value = Server.HtmlDecode(tournyName.Trim());

    SqlDataReader myReader;
    myReader = com.ExecuteReader();
    myRepeater.DataSource = myReader;
    myRepeater.DataBind();

还有我的 HTML,我想在其中显示结果:

<asp:Repeater id="myRepeater" runat="server">
<HeaderTemplate><table border="1"></HeaderTemplate>
<ItemTemplate>
<tr><td>
</td>
<td>
<%# Eval('Player 1')%>
</td>
<td>
 <%# Eval('Player 2')%>  
<td>
 <%# Eval('Score1')%>  
</td>
<td>
 <%# Eval('Score2')%>  
</td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>

无论我尝试什么,页面都显示为空白。任何人都可以告诉我如何显示这个吗?

4

2 回答 2

3

有几件事:

  • 由于您使用的是参数(好!),因此您不能在 SQL 查询中使用引号转义参数标记,即

选择 GamePlayer1 AS [Player 1],GamePlayer2 AS [Player 2],GamePlayer1Score AS [Score1],GamePlayer2Score AS [Score2] 从游戏 WHERE(TournyName = @TournyName)

  • eval 需要双引号,即<%# Eval("Player 1")%>

另外,请记住 Dispose 您的连接、命令和 SQLReader。

于 2012-10-04T13:29:28.740 回答
-1

您需要在您的 asp 中添加一个 ObjectDataSource,例如

<asp:ObjectDataSource ID="getPersonsDataSource" runat="server" SelectMethod="GetData" TypeName="Players.Data" />

这是实际运行您的查询并使其可用于 Eval 方法的内容。

于 2012-10-04T13:10:23.047 回答