tags:

views:

57

answers:

1

I've looked all over and haven't been able to find a clear answer to a seemingly common question: How can I do two-way databinding over a many-to-many relationship in ASP.net?

I have the following database structure: LINQ Diagram

I am currently writing a page for editing or adding a User record. Databinding things such as name and password is simple, but what I really need it to be able to display a list of all PhoneGroups and choose one or more from the list. How do I do this?

I tried a CheckBoxList, but while I can display the list of PhoneGroups, How do I bind the Checked state of each box based on whether the user has access? Some solutions use a loop in the OnDataBound event of the CheckBoxList. If I do this, how do I update the database when the checked state changes? I could go the brute force approach and write code to do this, but isn't there something that can make this simpler? It seems like such a common scenario.

Update #1

I am currently using Devart's LinqConnect, but I am open to change. The backend database is MySQL.

A: 

Yeah it is a common scenario and binding to that event is the solution i see used.

It is fairly simple when you consdier what the code is doing int he background. You could write your own custom server control, but thats a lot more difficult.

MVC may offer you an alternative ...

really why not redesign and only return the objects that they ahve permission for? as for updating items in the database you need to say more about the architecture. But ultimatley to update an item you have to take the new item ... you have to do womthing like this

public void StoreTheUpdatedData(YourBusinessObject theBusinessObject)
{
var yourDataContext = new DataContext()
var oldObject = (from i in yourDataContext.YourbusinessObjects
                where (blah equals blah to select your item and only your item)
                select i).First();

//repeat for all properties in the object
oldObject.Property = theBusinessObject.Property;

yourDataContext.SaveChanges();
}

code liek that is what you need to do the update.

the save method varies depending on which ORM you are using ... I think linq2SSql uses commitChanges for instance. Been a while since i used that one.

John Nicholas
This is the administrative interface. I need to return all objects because this is where the permissions are controlled.
Dark Falcon
ok, then you need to use that event.
John Nicholas