Distinct Selection Using Datatable and Repeater Control

Hello - thanks for taking a look at my ASP.NET question.

I have a datatable that contains three columns: ID, firstName, and lastName. I have a repeater control on my aspx page that is databound to this datatable and displays the firstName and lastName on the page.

The ID is not an auto-incremental primary key, rather the ID is pulled from another datasource related to the person's firstName and lastName.

Is there a way to prevent someone from adding the same record to the datatable? And, if not, a way to apply a Distinct Selection to the repeater?

For example, if I have a listing of names (showing the ID in this example)...

ID    firstName    lastName
1    John            Smith
2    Jim              Conner
3    Lisa             Stanton

...is there a way to not allow the user to enter "John Smith" twice?

Would it be better for me to make the ID column a Primary Key? And, if so, how would I avoid the ASP.NET error page regarding unique constraints?

Thank you for any insight you might provide - I know I am asking a rather broad-based question.
John0214Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Aneesh RetnakaranDatabase AdministratorCommented:
create a UNIQUE KEY Constraint on FirstName,LastName
0
Aneesh RetnakaranDatabase AdministratorCommented:
Or else before doing the insert perform a check

INSERT INTO urTable (FirstName, LastName)
SELECT 'John', 'Smith'
WHERE NOT EXISTS (SELECT 1 FROM  urTable WHERE FirstName = 'John' and LastName = 'Smith' )
0
John0214Author Commented:
Thank you for the quick reply, aneeshattingal.

Since this is a Datatable residing in a Session variable, I'm not exactly sure how I would perform this. I am going to include the code so you can see what it looks like now.

The Sub "AddToList" and Function "AddJohnTable" are included. Hopefully it makes sense.

Basically I have a DataList displaying people's names on the aspx page. A user can 'select' a person from the list by clicking on a LinkButton and their selection appears on a different area of the same page in a Repeater control.

I'm hoping to avoid the insertion of duplicate records in the Datatable because I will need to include the information in the Datatable into an e-mail later in the process, but I'm not that far yet.
Private Function AddJohnTable(ByVal ID As Integer, ByVal firstname As String, ByVal lastname As String, ByVal myTable As DataTable)
        
Dim row As DataRow
row = myTable.NewRow()
row("ID") = ID
row("First Name") = firstname.ToString
row("Last Name") = lastname.ToString
myTable.Rows.Add(row)
 
End Function
 
 
Protected Sub AddToList(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs)
 
Dim ID As Integer = DataList1.DataKeys(e.Item.ItemIndex)
Dim firstNameAdd As Label = CType(e.Item.FindControl("firstNameLabel"), Label)
Dim lastNameAdd As Label = CType(e.Item.FindControl("lastNameLabel"), Label)
Dim firstNameAddText As String = firstNameAdd.Text
Dim lastNameAddText As String = lastNameAdd.Text
 
AddJohnTable(ID, firstNameAddText, lastNameAddText, CType(Session("JohnTable"), DataTable))
 
Me.Repeater1.DataSource = CType(Session("JohnTable"), DataTable).DefaultView
 
Me.Repeater1.DataBind()
Me.DataList1.DataBind()
ID = CInt(ID)
firstNameAddText = ""
lastNameAddText = ""
 
End Sub

Open in new window

0
Aneesh RetnakaranDatabase AdministratorCommented:
i am really not a .net programmer, but i think you need to change the definition of this
AddJohnTable(ID, firstNameAddText, lastNameAddText, CType(Session("JohnTable"), DataTable))
 
0
John0214Author Commented:
I decided to go with the ID as the PRIMARY KEY, then do TRY CATCH error handling to prevent the insertion of the duplicate ID. It works!
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic Classic

From novice to tech pro — start learning today.

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.