Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 582
  • Last Modified:

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
<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
nedlogan
Asked:
nedlogan
  • 5
  • 4
  • 2
2 Solutions
 
GuitarRichCommented:
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
 
Muhammad Ousama GhazaliSolution Analyst & ArchitectCommented:
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
 
Muhammad Ousama GhazaliSolution Analyst & ArchitectCommented:
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
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
nedloganAuthor Commented:
Thanks so far. Moghazali I need any code in C# yours looks like VB?

Keith
0
 
Muhammad Ousama GhazaliSolution Analyst & ArchitectCommented:
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
 
Muhammad Ousama GhazaliSolution Analyst & ArchitectCommented:
Change Line 30 of above code to:

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

Open in new window

0
 
nedloganAuthor Commented:
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
 
Muhammad Ousama GhazaliSolution Analyst & ArchitectCommented:
Please try using Int32.TryParse() instead of int.
0
 
nedloganAuthor Commented:
Moghazali,
The error now is: "The name 'int32' does not exist in the current context."

Keith
0
 
GuitarRichCommented:
don't need to use int32 change it to
if (int.TryParse(Request.QueryString("id").ToString(), out m_intArticleId)) {
0
 
nedloganAuthor Commented:
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

  • 5
  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now