nedlogan
asked on
Display Default Content If No QueryString Provided
Hi,
I have a query that takes data (articles) from a database and displays them on the page. If someone visits Page.aspx?id=1 they will see article 1. My problem is I want to display some default content such as a list of articles on Page.aspx or, if someone just manually removes the query string from the URL. I used to do this all the time in PHP/MySQL but don't know how to do it in ASP.NET C#. The code provided shows where I am up to. I did this with the "Configure Data Source".
Thanks,
Keith
I have a query that takes data (articles) from a database and displays them on the page. If someone visits Page.aspx?id=1 they will see article 1. My problem is I want to display some default content such as a list of articles on Page.aspx or, if someone just manually removes the query string from the URL. I used to do this all the time in PHP/MySQL but don't know how to do it in ASP.NET C#. The code provided shows where I am up to. I did this with the "Configure Data Source".
Thanks,
Keith
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="C_ID" HeaderText="C_ID" SortExpression="C_ID" />
<asp:BoundField DataField="C_Name" HeaderText="C_Name"
SortExpression="C_Name" />
<asp:BoundField DataField="C_Title" HeaderText="C_Title"
SortExpression="C_Title" />
<asp:BoundField DataField="C_Category" HeaderText="C_Category"
SortExpression="C_Category" />
<asp:BoundField DataField="C_Author" HeaderText="C_Author"
SortExpression="C_Author" />
<asp:BoundField DataField="C_Content" HeaderText="C_Content"
SortExpression="C_Content" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [C_ID], [C_Name], [C_Title], [C_Category], [C_Author], [C_Content] FROM [SJCS_Content] WHERE ([C_Name] = @C_Name)">
<SelectParameters>
<asp:QueryStringParameter Name="C_Name" QueryStringField="id" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<br />
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
The String part in the above posted code has been wrongly posted, Use this one instead.
'For String Values
If Request.QueryString("name").Length > 0 Then
SqlDataSource1.SelectParameters.Add("ArticleId", TypeCode.String, Request.QueryString("name"))
Else
'Send some default value here
SqlDataSource1.SelectParameters.Add("ArticleId", TypeCode.Int32, "SomeDefaultName")
'Alternatively hide the grid and display default content on page directly
'GridView1.Visible = False
'Show some default text on some Label, etc. or unhide a pre
End If
ASKER
Thanks so far. Moghazali I need any code in C# yours looks like VB?
Keith
Keith
Find herewith the code in C#. I mostly use this converter to get the most good inter-convertion of VB and C#: http://www.developerfusion.com/tools/convert/vb-to-csharp/
//Define this on class or page level
private int m_intArticleId;
private string m_strName;
//Write below code in Page_Load event
if (Request.QueryString("id") != null) {
//For Integer Values
if (int.TryParse(Request.QueryString("id"), m_intArticleId)) {
SqlDataSource1.SelectParameters.Add("ArticleId", TypeCode.Int32, m_intArticleId);
}
else {
//Send some default value here such as 0
SqlDataSource1.SelectParameters.Add("ArticleId", TypeCode.Int32, 0);
}
//Alternatively hide the grid and display default content on page directly
//GridView1.Visible = False
//Show some default text on some Label, etc. or unhide a pre
//For String Values
if (Request.QueryString("name").Length > 0) {
SqlDataSource1.SelectParameters.Add("C_Name", TypeCode.String, Request.QueryString("name"));
}
else {
//Send some default value here
SqlDataSource1.SelectParameters.Add("C_Name", TypeCode.Int32, "SomeDefaultName");
}
//Alternatively hide the grid and display default content on page directly
//GridView1.Visible = False
//Show some default text on some Label, etc. or unhide a pre
}
Change Line 30 of above code to:
SqlDataSource1.SelectParameters.Add("C_Name", TypeCode.String, "SomeDefaultName");
ASKER
Hi Moghazali,
I'm getting errors from line 9 in your code. The first error is: "The best overloaded method match for 'int.TryParse(string, out int)' has some invalid arguments"?
Thanks,
Keith
I'm getting errors from line 9 in your code. The first error is: "The best overloaded method match for 'int.TryParse(string, out int)' has some invalid arguments"?
Thanks,
Keith
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Moghazali,
The error now is: "The name 'int32' does not exist in the current context."
Keith
The error now is: "The name 'int32' does not exist in the current context."
Keith
don't need to use int32 change it to
if (int.TryParse(Request.Quer yString("i d").ToString(), out m_intArticleId)) {
if (int.TryParse(Request.Quer
ASKER
Hi,
Thanks for your help guys, in the end I used the first solution that GuitarRich posted.
Moghazali, I couldn't get your code to work but thanks anyway for the work you did.
Keith
Thanks for your help guys, in the end I used the first solution that GuitarRich posted.
Moghazali, I couldn't get your code to work but thanks anyway for the work you did.
Keith
Open in new window