We help IT Professionals succeed at work.

Simple IF Statement C#.. NEED HELP!

Fezi
Fezi asked
on
251 Views
Last Modified: 2012-05-07
Hello,

I'm trying to do an IF Statement in C# (.net). I want to call on the IF Statement, if SectorID is not 1 then response.redirect...

SectorID is in the database.. how do I do this?
DataModule dm = new DataModule();
 
                DataTable dt2 = dm.getData(String.Format("select ID, SectorID from tbl_UploadStories where ID={0} AND SectorID = 1", ar.SectionID.ToString()));
 
                if (dt2.DataSet != WHAT TO I PUT HERE??? )
                {
                    Response.Redirect("/");
                }

Open in new window

Comment
Watch Question

Dirk HaestProject manager
CERTIFIED EXPERT

Commented:
if (dt2.Rows[0]["ID"] != 1 )
Billing Engineer
CERTIFIED EXPERT
Most Valuable Expert 2014
Top Expert 2009
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION
Dirk HaestProject manager
CERTIFIED EXPERT

Commented:
Like angelll presumed: does your query always return 1 row ?
If so, you can use the check of angelll.
         if (dt2.Rows.Count == 0 )
                {
                    Response.Redirect("/");
                }

If you return more rows and you need to check the value of the "ID" of the first row, you can check it like I mentioned.
         if (dt2.Rows[0]["ID"] != "1" )
                {
                    Response.Redirect("/");
                }

Or can it return more rows and do you need to check if there is a row with the "ID" equal to 1 ?

Author

Commented:
angelIII - Your code works, but not in the way I want it to work. Your code works if the ID does not exist then it will redirect.

Dhaest - your code does not seem to work, error is 'cannot be applied to operands of type 'object' and 'int''

What I want to do is, If the SectorID is not 1 then redirect


hope this helps
Dirk HaestProject manager
CERTIFIED EXPERT
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION
Guy Hengel [angelIII / a3]Billing Engineer
CERTIFIED EXPERT
Most Valuable Expert 2014
Top Expert 2009

Commented:
or this:
if (dt2.Rows[0]["ID"].ToString() != "1" )
                {
                    Response.Redirect("/");
                }

Open in new window

Author

Commented:
For some reason it is only allowing me to see the first record.

Scenario:
I have a list of articles on a page, which I click on a headline it displays another page with the full article, in the database I have many different articles with different SectorID's. I only want to show articles with SectorID = 1. All other articles with SectorID 2,4 and 5 will need to redirect to the home page.

Thats what I want to do.

The code above isn't quiet there yet.
Dirk HaestProject manager
CERTIFIED EXPERT

Commented:
>> DataTable dt2 = dm.getData(String.Format("select ID, SectorID from tbl_UploadStories where ID={0} AND SectorID = 1", ar.SectionID.ToString()));

So you are searching in the database for all items in your database (tbl_UploadStories ) where sectorID = 1.... But why are you setting ID = ? with ar.SectionID ?

Author

Commented:
the ID is in the querystring, if someone tries to manually enter different articles in the querystring using the ID, with SectorID = 2 in the database, then it needs to redirect to the home page
Dirk HaestProject manager
CERTIFIED EXPERT
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION

Author

Commented:

Angel's is useful, but it's not what I want. that code only works if the record does not exist in the database.

In my database, I have Incremented ID's and SectorID  = 1, 2, 4, 5


But I only want user's to view articles with SectorID = 1.  e.g.

ID = 4
SectorID = 1

ID = 3
SectorID = 2

If the user types ID 4 in the querystring the page should display. If the user types 3 in the querystring It should REDIRECT the page to the homepage, because the SectorID = 2.

Commented:
DataModule dm = new DataModule();
 
                DataTable dt2 = dm.getData(String.Format("select ID, SectorID from tbl_UploadStories where ID={0} AND SectorID = 1", ar.SectionID.ToString()));
 
                if (dt2.DataSet != 1 )
                {
                    Response.Redirect("/");
                }

Author

Commented:
Yes, I tried this but got an error on ----        if (dt2.DataSet != 1 )

Operator '!=' cannot be applied to operands of type 'System.Data.DataSet' and 'int'

Commented:
What about
if (dt2.DataSet != "1" )

Author

Commented:
same error...

Author

Commented:
Does anyone have a solution?

Commented:
What if you take angellls suggestion and put it into a for loop?

so it would look like this

if (dt2.Rows[0]["ID"].ToString() != "1" )
                {
                    Response.Redirect("/");
                }
for(int i = 0 ; i <= dt2.Rows[i] ; i++
{
if (dt2.Rows[i]["ID"].ToString() != "1" )
                {
                    Response.Redirect("/");
                }
}

Open in new window

Guy Hengel [angelIII / a3]Billing Engineer
CERTIFIED EXPERT
Most Valuable Expert 2014
Top Expert 2009

Commented:
I suggest to use the power of .net
DataView dv = dt2.DefaultView();
dv.RowFilter = "ID = 1";
if (dv.Rows.Count > 0 )
{
  Response.Redirect("/");
}

Open in new window

Author

Commented:
hi, i get two errors with that code.

Error      101      'System.Data.DataTable.DefaultView' is a 'property' but is used like a 'method'

Error      102      'System.Data.DataView' does not contain a definition for 'Rows'

All I want to do is NOT to display SectorID = 2, 4, 5 on the page
Guy Hengel [angelIII / a3]Billing Engineer
CERTIFIED EXPERT
Most Valuable Expert 2014
Top Expert 2009

Commented:
sorry, the first line should read:
DataView dv = dt2.DefaultView;

Author

Commented:
hi... I still have an error with the 3rd line 'Rows'

                DataView dv = dt2.DefaultView;
                dv.RowFilter = "ID = 1";
                if (dv.Rows.Count > 0)
                {
                    Response.Redirect("/");
                }

Error      102      'System.Data.DataView' does not contain a definition for 'Rows'
Guy Hengel [angelIII / a3]Billing Engineer
CERTIFIED EXPERT
Most Valuable Expert 2014
Top Expert 2009

Commented:
DataView dv = dt2.DefaultView;
                dv.RowFilter = "ID = 1";
                if (dv.Count > 0)
                {
                    Response.Redirect("/");
                }

Author

Commented:
the code works, but it's not exactly what I need.

I only need want to display articles from the database that have a SectorID 1 in the database. SectorID and ID are two different fields. SectorID is like a section stored in another database. and ID is the main ID of that article...
Guy Hengel [angelIII / a3]Billing Engineer
CERTIFIED EXPERT
Most Valuable Expert 2014
Top Expert 2009

Commented:
so, this should be it?
DataView dv = dt2.DefaultView;
                dv.RowFilter = "SectorID = 1";
                if (dv.Count == 0)
                {
                    Response.Redirect("/");
                }

Open in new window

Author

Commented:
It still displays  the articles with different SectionID ...
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.