views:

322

answers:

4

Hi

I know my ASP.NET but i have to admit, i am dumb with classes and not sure how they work exactly. Also have not worked with them yet but i want to. But what I do know is that it's a place where i can keep code for re-use correct? How will my class look with my code?

So this is my code i use on about 3 forms - but i want to save it in 1 spot and just call it from like when i click on btnSubmit.

Dim strConnection As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
    Dim con As SqlConnection = New SqlConnection(strConnection)
    Dim cmd As SqlCommand = New SqlCommand
    Dim objDs As DataSet = New DataSet
    Dim dAdapter As SqlDataAdapter = New SqlDataAdapter

    cmd.Connection = con
    cmd.CommandType = CommandType.Text
    cmd.CommandText = "SELECT distinct FIELD FROM TABLE order by FIELD"

    dAdapter.SelectCommand = cmd
    con.Open()
    dAdapter.Fill(objDs)
    con.Close()

    If (objDs.Tables(0).Rows.Count > 0) Then

        lstDropdown.DataSource = objDs.Tables(0)
        lstDropdown.DataTextField = "FIELD"
        lstDropdown.DataValueField = "FIELD"
        lstDropdown.DataBind()
        lstDropdown.Items.Insert(0, "Please Select")
        lstDropdown2.Items.Insert(0, "Please Select")

    Else

        lblMessage.Text = "* Our Database seem to be down!"

    End If

What must i put here to execute my code above?

Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click

    ?????????????????????????????????

    End Try

End Sub

Thanks in advanced!

Etienne

A: 

I sometimes create a "Common" class and put public Shared methods in it that I want to call from different places.

Something along these lines:

Public Class Common

Public Shared Sub MyMethod
  'Do things.
End Sub

End Class

I'd then call it using:

Common.MyMethod

Obviously, you can a sub/function definition that takes the parameters you require.

Sorry if my VB.NET code is a bit off. I usually use C#.

dommer
+2  A: 

A class is (in VB.Net) is defined as so

Public Class Person

private _firstName as string
private _lastName as string

'''Constructor with no params
public Sub New()
  _firstName = ""
  _lastName = ""
End Sub

'Contructor with params
Public Sub New(FirstName as String, LastName as String)
  _firstName = FirstName
  _lastName = LastName
End Sub

Public Property FirstName As String
 Get
  return _firstName
 End Get
 Set(value as String)
  _firstName = value
 End Set
End Property

Public Property LastName As String
     Get
      return _lastName
     End Get
     Set(value as String)
      _lastName = value
     End Set
    End Property

Public Function HitHomeRun() As Boolean
  ....'Do some stuff here
End Function
End Class

You can then instantiate the class and call its members.

Dim p as New Person()
p.FirstName = "Mike"
p.LastName = "Schmidt"

dim IsHomeRunHit As Boolean = p.HitHomeRun()

Learn more about creating and consuming classes in VB.Net.

This is a very big topic and can be defined in many different ways. But typically what you are venturing into is an N-Tier architecture.

Data Access Layer
Business Logic
UI Logic

Now the way a class can be built in your question can be done, but in the long run is prone to maintenance horror and modifiiability is cut short. Not to mention very much prone to bugs. Putting any type of data access code in your UI layer is bad practice.

This is where the power of having separate layers of classes (separation of concerns) in each layer gives you the ability to reuse code and ability to easily modify for future expansions/features etc. This is getting into Software Architecture is a very broad topic to put into one post.

But if you are really interested here are some links to point you into the right directions.

  1. N-Tier Architecture from Wikipedia
  2. Data Access Layer
  3. Business Logic Layer
  4. Martin Fowler is an expert in Architecture

There is software that eases the pain of the DAL.
1. Linq-To-SQL ability to query your data via .Net Objects (compiled queries)
2. Entity Framework Version 2 of Linq-To-SQL

And this effectively could replace all of your SQL code.

irperez
+1  A: 

If you want to reuse the code, you should put it in a separate project. That way you can add that project to different solutions (or just reference the compiled dll).

In your web project you add a reference to the project (or to the dll if you have compiled it before and don't want to add the project to the solution).

In your new project you add a class file, for example named UIHelper. In the class skeleton that is created for you, you add a method. As the class is in a separate project, it doesn't know about the controls in the page, so you have to send references to those in the method call:

Public Shared Sub PopulateDropdowns(lstDropdown As DropDownList, lstDropdown2 As DropDownList)

   ... here goes your code

End Sub

In your page you call it with references to the dropdown lists that you have in the page:

UIHelper.PopulateDropdowns(lstDropdown, lstDropdown2)

This will get you started. There is a lot more to learn about using classes...

Guffa
A: 

I think you should look into using visual studio designer tools to do your data access and data binding. Search for typed datasets

Ender