查询字符串和Repeater

时间:2012-12-13 17:32:32

标签: c# query-string repeater

我有一个大学项目来建立新闻网站。在我的主页上我有一些链接 我试图通过此URL传递查询字符串

<a href="Content.aspx?Id=2&NewsId=6">

MyContent.aspx文件

<%@ Page Title="" Language="C#"  MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeFile="Content.aspx.cs" Inherits="Content" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            <%# Eval ("NewsDetails") %>
        </ItemTemplate>
    </asp:Repeater>
</asp:Content>

文件背后的代码

public partial class Content : System.Web.UI.Page
{    
    protected void Page_Load(object sender, EventArgs e)
    {
        int _Id = Convert.ToInt32(Request.QueryString["Id"]);
        int _NewsDetails = Convert.ToInt32(Request.QueryString["NewsDetails"]);
        int _NewsId = Convert.ToInt32(Request.QueryString["NewsId"]);

        //open your database connection
        SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\MySite\\Pandheri\\App_Data\\Padheri.mdf;Integrated Security=True;User Instance=True");
        conn.Open();
        SqlCommand _cmd = new SqlCommand ("Select [NewsDetails],[Id] FROM Article",conn);
        DataSet ds = new DataSet();
        SqlDataAdapter adptr = new SqlDataAdapter(_cmd);
        adptr.Fill(ds);
        //close your database connection

        Repeater1.DataSource = ds;
        Repeater1.DataBind();

    }

当我运行页面时,我从NewsDetails表中获取所有数据。

我的数据库。

{新闻表

标识,新闻分类

文章表

标识,NewsTitle,NewsDetails,NewSID的}

1 个答案:

答案 0 :(得分:0)

好的,我假设IdNewsId分别代表Id表中的NewsIdArticle。您通过查询字符串传递这些值,并希望从数据库中提取与这些ID相关的文章。

您正在阅读查询字符串。但是你没有对你正在阅读的价值做任何事情。您需要将它们传递给SQL查询。您的SqlCommand变为:

SqlCommand _cmd = new SqlCommand ("Select [NewsDetails],[Id] FROM Article WHERE [Id]=@Id AND [NewsId]=@NewsId",conn);

注意WHERE子句。我们在SQL查询中设置参数。现在我们需要用查询字符串中的值填充这些参数。

_cmd.Parameters.AddWithValue("@Id", _Id);
_cmd.Parameters.AddWithValue("@NewsId", _NewsId);

现在,当SqlCommand运行时,您应该这两个ID定义的文章。