Monthly Archives: September 2006

Dealing with invisible columns in a GridView when updating

When you make columns invisible in a GridView-control the values in those columns are ignored when doing an update. If the update function, stored proc, or whatever expects these values (particularly when you use CollisionDetection=”CompareAllValues”), the update will fail.


The solution:
– Add the names of the invisible columns to the DataKeyNames-properties separated by a comma, so the values are available.
– Create an event handler for the GridView.RowUpdating and add the code below. This copies all “key” values to the old and new values so the update will work.


IDictionaryEnumerator restoreOldValues = e.Keys.GetEnumerator();
while (restoreOldValues.MoveNext())

   e.OldValues.Add(restoreOldValues.Key.ToString(), restoreOldValues.Value.ToString());
   e.NewValues.Add(restoreOldValues.Key.ToString(), restoreOldValues.Value.ToString());
}

TIP: Onzichtbare kolommen opslaan met een GridView-control

Als je kolommen onzichtbaar maakt in een GridView-control worden de waardes daarvan niet meegestuurd als je een update gaat doen. Als je werkt met CollisionDetection=”CompareValues” betekent dit dat de update niet goed gaat als de stored procedure of functie die je gebruikt de originele waardes ook verwacht.


De oplossing:
– Voeg de kolommen die je niet zichtbaar maakt (of uberhaupt niet invoegt) toe aan de DataKeyNames-eigenschap, gescheiden door een komma.
– Maak een EventHandler voor GridView.RowUpdating en zet daar de onderstaande code in. Hiermee worden alle keys toegevoegd aan de oude en nieuwe waardes (die voor die kolommen toch niet verandert).


IDictionaryEnumerator restoreOldValues = e.Keys.GetEnumerator();
while (restoreOldValues.MoveNext())

   e.OldValues.Add(restoreOldValues.Key.ToString(), restoreOldValues.Value.ToString());
   e.NewValues.Add(restoreOldValues.Key.ToString(), restoreOldValues.Value.ToString());
}

Geen database diagram kunnen maken in SQL Server

Het gebeurt me nog wel eens dat ik een SQL Server database aangeleverd krijg en dan wil ik graag een diagram hebben van de tabellen en relaties. Zo’n diagram kun je maken door er een toe te voegen in de Database Diagram map die te zien is in SQL Enterprise Manager (2000) of SQL Management Studio (2005). Vaak krijg je dan de melding hieronder:



Helaas kun je de Database Properties in dat geval niet opvragen (in elk geval niet in SQL Management Studio), dus kun je het niet aanpassen. Door de volgende query uit te voeren is het euvel ook opgelost


ALTER AUTHORIZATION ON Database::[Database Name] TO [sa]