Solved

Display Default Content If No QueryString Provided

Posted on 2009-05-13
11
562 Views
Last Modified: 2012-06-22
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
<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 />

Open in new window

0
Comment
Question by:nedlogan
  • 5
  • 4
  • 2
11 Comments
 
LVL 12

Assisted Solution

by:GuitarRich
GuitarRich earned 60 total points
ID: 24373565
in your page load you could check for the existance of the querystring parameter and redirect to another page if its not there:
 

if (Request.QueryString["id"] == null)

{

    Response.Redirect("anotherpage.aspx");

}

Open in new window

0
 
LVL 11

Expert Comment

by:Muhammad Ousama Ghazali
ID: 24373647
Try the code provided in snipped box below in your code behind file. Make sure to make appropriate changes as per your situation.
'Define this on class/page level

Private m_intArticleId As Integer

Private m_strName As String
 

'Write below code in Page_Load event

If Request.QueryString("id") IsNot Nothing Then
 

  'For Integer Values

	If Integer.TryParse(Request.QueryString("id"), m_intArticleId) Then

    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

  

	End If

  

  'For String Values

	If Request.QueryString("id").Length > 0 Then

    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

  

	End If
 

End If

Open in new window

0
 
LVL 11

Expert Comment

by:Muhammad Ousama Ghazali
ID: 24373657
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

Open in new window

0
 
LVL 2

Author Comment

by:nedlogan
ID: 24373997
Thanks so far. Moghazali I need any code in C# yours looks like VB?

Keith
0
 
LVL 11

Expert Comment

by:Muhammad Ousama Ghazali
ID: 24374051
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

  

}

Open in new window

0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 11

Expert Comment

by:Muhammad Ousama Ghazali
ID: 24374064
Change Line 30 of above code to:

      SqlDataSource1.SelectParameters.Add("C_Name", TypeCode.String, "SomeDefaultName");

Open in new window

0
 
LVL 2

Author Comment

by:nedlogan
ID: 24374468
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
0
 
LVL 11

Accepted Solution

by:
Muhammad Ousama Ghazali earned 65 total points
ID: 24374696
Please try using Int32.TryParse() instead of int.
0
 
LVL 2

Author Comment

by:nedlogan
ID: 24375812
Moghazali,
The error now is: "The name 'int32' does not exist in the current context."

Keith
0
 
LVL 12

Expert Comment

by:GuitarRich
ID: 24376516
don't need to use int32 change it to
if (int.TryParse(Request.QueryString("id").ToString(), out m_intArticleId)) {
0
 
LVL 2

Author Closing Comment

by:nedlogan
ID: 31580903
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
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Migrating to Microsoft Office 365 is becoming increasingly popular for organizations both large and small. If you have made the leap to Microsoft’s cloud platform, you know that you will need to create a corporate email signature for your Office 365…
Internet Business Fax to Email Made Easy - With  eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, f…

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now