2012-01-16 3 views
0

Я создал страницу, которая загружает данные из строки запроса. И создает ссылку на другую страницу с URL следующим образом.asp.net query string databind

http://localhost:61279/clubpage.aspx?CategoryID=1 

Когда я нажимаю на категорию 1, как я извлекаю данные, относящиеся только к этой строке запроса.

Некоторые из кода, который у меня есть, но он не работает.

</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <h2> 
     Youth clubs</h2> 
    <p> 
     <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" 
     EnableViewState="False"> 
      <HeaderTemplate> 
       <ul> 
      </HeaderTemplate> 

      <ItemTemplate> 
       <%-- <%--<%-- You can use an anchor element... --%> 
      <%-- <li><a href='youthclubpage.aspx?CategoryID=<%# Eval("YouthClubID") %>'><%# Eval("youthclubname") %></a> - <%# Eval("description") %></li> --%>     

       <%-- Or a HyperLink Web control...---%> 
       <li><asp:HyperLink runat="server" Text='<%# Eval("youthclubname") %>' NavigateUrl='<%# "youthclubpage.aspx?CategoryID=" + Eval("YouthClubID") %>'></asp:HyperLink> 
        - <%# Eval("Description") %></li> 

      </ItemTemplate> 

      <FooterTemplate> 
       </ul> 
      </FooterTemplate> 
     </asp:Repeater> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:joanton7865org7272_youthpodcastConnectionString %>" 

     SelectCommand="SELECT [youthclubname], [description], [YouthClubID] FROM [youthclublist]"> 
    </asp:SqlDataSource> 
    </p> 

    </asp:Content> 
+8

Замечательный сайт! –

+2

Как вы привязываете данные? Через код позади? Использование элемента управления источником данных? – robasta

+0

Этот вопрос слишком широк. В основном вы просите нас сделать все для вас. Вы должны попытаться рассказать нам, с чем конкретно возникают проблемы. –

ответ

1

Вы можете получить доступ к строке запроса с помощью

int categoryId = 0; 

if(int.TryParse(Request.Params["CategoryID"]), out categoryId)) 
{ 
    // query data with categoryID 
} 
else 
{ 
    // no category id 
    Response.Redirect("Default.aspx"); 
} 

Далее информация MSDN на Request Params

0
int CatagoryID = Request["CatagoryID"]; 

string myQuery = "Select Fields from table where [Filtered column] = " + CatagoryID; 

Это то, что вы ищете?

+1

Команды SQL не должны создаваться так. http://xkcd.com/327/ – Curt

+0

это приведет к «SQL-инъекциям», поэтому лучше использовать параметр с параметризованным запросом –

+1

Я обычно использую встроенный встроенный sql-код proc, пытающийся понять вопрос, чтобы ваш пример был более кратким:). –

1

вы можете использовать, как это, и убедитесь, что вы используете параметризованные запросы, чтобы избежать SQL-инъекции SqlCommand Class

int categoryId = 0; 

if(Request["CategoryID"]!=null) 
{ 
categoryID=Convert.ToInt32(Request["CategoryID"]); 
SqlConnection ConnObject = new SqlConnection("ConnString of your SQL Provider"); 
SqlCommand cmd = new SqlCommand("select some thing from your table where [email protected]",ConnObject); 
cmd.Parameters.AddWithValue("@catID", categoryId); 
SqlDatareadr dr= cmd.ExecuteReader(); 
while(dr.read()) 
{ 
// use the returned values from DB 
} 
} 
else 
{ 

//category not exist 
}