Avec sql-server on ferait une proc. stockée en construisant la requete en mode texte, du genre :
CREATE PROC uneProc @check1 bit, @check2 bit
AS
BEGIN
declare @sql varchar(100)
set @sql = 'SELECT CHAMPFIXE '
IF @check1 = 1
set @sql = @sql + ', CHAMP1'
IF @check2 = 1
set @sql = @sql + ', CHAMP2'
set @sql = @sql + ' FROM MATABLE'
EXECUTE(@sql)
END
Pour acces tu peux faire de même depuis le code aspnet :
string req = "SELECT CHAMPFIXE ";
if( check1.checked )
req += ", CHAMP1 "
ect...
Ensuite il suffit de lier le gridView ou le datagrid avec le résultat de la requete et les objets SQL courrants :
DataTable
SqlDataAdapter::Fill
Bind()
ect...
Si tu Bindes un grid avec le résultat de la requete ou tous les checkBox sont décochés, il n'y aura que les colonnes fixes.
Maintenant si tu veux construire la table HTML toi-même, c'est aussi simple,
en bouclant sur un SqlDataReader, tu ajoutes au fur et à mesure les <TR> et les <TD> selon les données du Reader.