OVH Cloud OVH Cloud

ajouter des colonnes à un datagrid sans avoir un dataset

2 réponses
Avatar
Steeve
Bonjour,
j'aimerais créer un espèce de générateur de liste. C'est à dire que
l'utilisateur click dans une ListBox les champs d'une table dans la base de
données qu'il désire. Ensuite , il met un titre et click sur le bouton
"générer" pour être diriger vers la 2e page pour avoir sa liste prêt pour
l'impression.
Voici mon problème, je pensais qu'en mettant la propriété AutoGenerateColumn
à true du DataGrid ça serait suffisant pour faire sortir seulement les
colonnes sélectionnées , mais il les sortent toutes. Ça fait un tableau
beaucoup trop large pour rien!

Une suggestion pour arranger ça ? Ou une alternative ?
Steeve

-------PAGE DE CHOIX DES COLONNES ---------------
private void btnGenerer_Click(object sender, System.EventArgs e)
{
string champs = "";
string SQL = "";
foreach(ListItem item in ListBox1.Items)
{
if (item.Selected)
{
champs += item.Value;
champs += ", ";
}
}
champs = champs.Substring( 0, champs.LastIndexOf( ',' ));
champs = champs.TrimEnd(',');
SQL = "SELECT " + champs + " FROM CLIENTS";
Session["generateurSQL"] = SQL;
Session["generateurTitre"] = txtTitre.Text;
Server.Transfer("ListeGeneree.aspx");
}

--- CRÉATION DU DATAGRID (2e PAGE) ----------
private void Page_Load(object sender, System.EventArgs e)
{
string strConnection = ConfigurationSettings.AppSettings["ConnStr"];
SqlConnection sqlConn = new SqlConnection(strConnection);
lblTitre.Text = (string)Session["generateurTitre"];
SqlDataAdapter adapter1 = new
SqlDataAdapter((string)Session["generateurSQL"], sqlConn);
adapter1.Fill(client1, "CLIENTS");
DataGrid1.DataSource = client1.Tables["CLIENTS"];
DataGrid1.DataBind();
lblDate.Text = DateTime.Now.ToShortDateString();
}

2 réponses

Avatar
Paul Bacelar
Et passer par une DataView comme source, c'est pas plus simple?
--
Paul Bacelar
Demandeur d'emploi

"Steeve" wrote in message
news:
Bonjour,
j'aimerais créer un espèce de générateur de liste. C'est à dire que
l'utilisateur click dans une ListBox les champs d'une table dans la base


de
données qu'il désire. Ensuite , il met un titre et click sur le bouton
"générer" pour être diriger vers la 2e page pour avoir sa liste prêt pour
l'impression.
Voici mon problème, je pensais qu'en mettant la propriété


AutoGenerateColumn
à true du DataGrid ça serait suffisant pour faire sortir seulement les
colonnes sélectionnées , mais il les sortent toutes. Ça fait un tableau
beaucoup trop large pour rien!

Une suggestion pour arranger ça ? Ou une alternative ?
Steeve

-------PAGE DE CHOIX DES COLONNES ---------------
private void btnGenerer_Click(object sender, System.EventArgs e)
{
string champs = "";
string SQL = "";
foreach(ListItem item in ListBox1.Items)
{
if (item.Selected)
{
champs += item.Value;
champs += ", ";
}
}
champs = champs.Substring( 0, champs.LastIndexOf( ',' ));
champs = champs.TrimEnd(',');
SQL = "SELECT " + champs + " FROM CLIENTS";
Session["generateurSQL"] = SQL;
Session["generateurTitre"] = txtTitre.Text;
Server.Transfer("ListeGeneree.aspx");
}

--- CRÉATION DU DATAGRID (2e PAGE) ----------
private void Page_Load(object sender, System.EventArgs e)
{
string strConnection = ConfigurationSettings.AppSettings["ConnStr"];
SqlConnection sqlConn = new SqlConnection(strConnection);
lblTitre.Text = (string)Session["generateurTitre"];
SqlDataAdapter adapter1 = new
SqlDataAdapter((string)Session["generateurSQL"], sqlConn);
adapter1.Fill(client1, "CLIENTS");
DataGrid1.DataSource = client1.Tables["CLIENTS"];
DataGrid1.DataBind();
lblDate.Text = DateTime.Now.ToShortDateString();
}




Avatar
Steeve
Pouvez-vous me donner une adresse web me permettant de comprendre le
dataview pour résoudre mon problème? Merci


"Paul Bacelar" a écrit dans le message
de news:
Et passer par une DataView comme source, c'est pas plus simple?
--
Paul Bacelar
Demandeur d'emploi

"Steeve" wrote in message
news:
> Bonjour,
> j'aimerais créer un espèce de générateur de liste. C'est à dire que
> l'utilisateur click dans une ListBox les champs d'une table dans la base
de
> données qu'il désire. Ensuite , il met un titre et click sur le bouton
> "générer" pour être diriger vers la 2e page pour avoir sa liste prêt


pour
> l'impression.
> Voici mon problème, je pensais qu'en mettant la propriété
AutoGenerateColumn
> à true du DataGrid ça serait suffisant pour faire sortir seulement les
> colonnes sélectionnées , mais il les sortent toutes. Ça fait un tableau
> beaucoup trop large pour rien!
>
> Une suggestion pour arranger ça ? Ou une alternative ?
> Steeve
>
> -------PAGE DE CHOIX DES COLONNES ---------------
> private void btnGenerer_Click(object sender, System.EventArgs e)
> {
> string champs = "";
> string SQL = "";
> foreach(ListItem item in ListBox1.Items)
> {
> if (item.Selected)
> {
> champs += item.Value;
> champs += ", ";
> }
> }
> champs = champs.Substring( 0, champs.LastIndexOf( ',' ));
> champs = champs.TrimEnd(',');
> SQL = "SELECT " + champs + " FROM CLIENTS";
> Session["generateurSQL"] = SQL;
> Session["generateurTitre"] = txtTitre.Text;
> Server.Transfer("ListeGeneree.aspx");
> }
>
> --- CRÉATION DU DATAGRID (2e PAGE) ----------
> private void Page_Load(object sender, System.EventArgs e)
> {
> string strConnection = ConfigurationSettings.AppSettings["ConnStr"];
> SqlConnection sqlConn = new SqlConnection(strConnection);
> lblTitre.Text = (string)Session["generateurTitre"];
> SqlDataAdapter adapter1 = new
> SqlDataAdapter((string)Session["generateurSQL"], sqlConn);
> adapter1.Fill(client1, "CLIENTS");
> DataGrid1.DataSource = client1.Tables["CLIENTS"];
> DataGrid1.DataBind();
> lblDate.Text = DateTime.Now.ToShortDateString();
> }
>
>