07. oktober 2004 - 23:24Der er
14 kommentarer og 1 løsning
Hente 7 coloner fra en tabel i en DataSet, men kun vise de 6
Hej
Jeg henter 7 coloner inkl. Id colonne fra min MS Sql server, inde i en DataSet object og binder det til en datagrid. Id skal jeg brug til at finde rundt i datagridet, men jeg vil ikke vise ID colonnen i Datagrid'et, hvordan kan det lad sig gøre ?
Nope det virker ikke, for på denne måde kunne jeg også sige, Column[index].visible = false; Men før data'ene bliver loadet inden i datagridet, kan jeg ikke refere til dens colonner.
du kan enten definere dine kolonner selv ved at sætte AutoGenerateColumns=false, og tilføje de BoundColumns/TemplateColumns du måtte have brug for. (sig til hvis du vil have et eksempel)
hvis du ellers er tilfreds med det autogenererede grid, er det nemmeste nok hvis du abbonnere på f.eks. ItemDataBound-eventet og skriver lidt kode i denne stil her :
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { // angiv f.eks. kolonne nummer 2 som usynlig e.Item.Cells[1].Visible = false; }
du abbonnerer på eventet på denne måde : this.DataGrid1.ItemDataBound += new DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
(hvis du bruger visual studio kan du bare klikke på lynet i propertysheetet, og efterfølgende dobbeltklikke der hvor der står ItemDataBound - så skriver miljøet den nødvendige kode for at du kan håndtere eventet).
håber det er tilstrækkeligt - ellers må du lige sige til. mvh
Så prøv at gøre det i ItemCreated istedet for ItemDataBound... Du kan teste på typen af item ved e.ItemType... altså if(e.Item.ItemType == ListItemType.Header) // er så headeren
Snepnet: der er kommet et lille problem, jeg har på min datagrid også select command knapper, når jeg har valgt en select knap og så klikker på den næste select knap, forvandles teksten på den forrige colonne hvor jeg havde klikket på select, til det samme inden jeg brugte ItemCreated event. Ved ikke helt hvorfor den opføre sådan.
det har sansynligvis noget at gøre med den måde du databinde og gemmer.... jeg er lige på vej ud af døren, men jeg sidder ved klaveret igen senere. du må meget gerne poste lidt mere kode, så jeg kan se hvordan du gør det. mvh
SqlConnection sqlCon = new SqlConnection( ConfigurationSettings.AppSettings["DbPath"]);
SqlDataAdapter daSoftware = new SqlDataAdapter(); SqlDataAdapter daUdgiver = new SqlDataAdapter(); SqlDataAdapter da = new SqlDataAdapter(); DataSet ds = new DataSet();
#region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); }
/// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.ddlUdgiver.SelectedIndexChanged += new System.EventHandler(this.ddlUdgiver_SelectedIndexChanged); this.btnOk.Click += new System.EventHandler(this.btnOk_Click); this.dgOversigt.ItemCreated += new System.Web.UI.WebControls.DataGridItemEventHandler(this.dgOversigt_ItemCreated); this.dgOversigt.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.dgOversigt_ItemCommand_1); this.dgOversigt.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.dgOversigt_ItemDataBound); this.Load += new System.EventHandler(this.Page_Load);
hmmm... sidder egentlig og bliver lidt i tvivl om hvad du mener.... Jeg tror sådan lige umiddelbart at du kunne løbe ind i problemer fordi itemdatabound kaldes efter itemcommand. debugger du nogensinde ? (for så kan du kontrollere sekvensen ved debugging).
det ville være fint, hvis du lige prøvede med en anden formulering af den her : "når jeg har valgt en select knap og så klikker på den næste select knap, forvandles teksten på den forrige colonne hvor jeg havde klikket på select, til det samme inden jeg brugte ItemCreated event".
har fundet fejlen, betingelsen skulle rettes til følgende: if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.SelectedItem)
Men tak snepnet, vi snakkes ved, jeg laver jo nok igen et spørgsmål snart :->
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.