Avatar billede el_fredo Praktikant
10. november 2003 - 10:55 Der er 14 kommentarer og
2 løsninger

DataGrid formatering / udelukkelse af felter

Hej.
Jeg er ved at lave det sædvanlige filmregister til mine DVD'er og VHS'er, og har indtil nu benyttet en DataList til visning af DB indhold, men jeg er nu gået over til DataGrid, da der er problemer med korrekt at kunne "pege" på konkrete film i en DataList, hvis der er dubletter. Problemet er så nu, at DataGrid'et viser alle felter fra databasen. Blandt andet mit ID-felt. Jeg vil gerne have, at kun filmens titel bliver vist i datagrid'et. Hvordan formaterer jeg det? Jeg har kigget på andre spørgsmål, og har set løsninger til ASP.NET, men det virker tilsyneladende ikke, når jeg arbejder i "ren" C#.
Avatar billede neverwho Nybegynder
10. november 2003 - 10:57 #1
udelad at hente id fra db
Avatar billede el_fredo Praktikant
10. november 2003 - 11:01 #2
Men hvis ikke jeg henter alle data ud, kan jeg jo ikke senere slette den pågældende film igen... Hvis den eneste information der står i DataGrid'et er "Titel" - fx "Austin Powers 1", og det i øvrigt også er det eneste jeg henter ud af databasen, så vil et sql-kald som "DELETE FROM FilmTabel WHERE Titel = 'Austin Powers 1'" resultere i, at alle instanser af denne film (både DVD'er VHS'er og evt. dubletter) ville blive slettet...
Avatar billede neverwho Nybegynder
10. november 2003 - 11:03 #3
hvordan vil du slette?
med en checkbox eller button?
hvis du nu bare sætter farven på skriften til baggrundsfarve! (Skud i tågen ;)
Avatar billede el_fredo Praktikant
10. november 2003 - 11:21 #4
Jeg havde regnet med at slette, ved først at markere rækken, og derefter trykke på "Slet". Man kan jo (tilsyneladende) nemt finde ud af hvilken række i et DataGrid der er markeret. Hvis jeg gør skriftfarven "usynlig" vil dette være gældende for alle felter. Desuden Vil der stadigvæk være en hel kolonne (mindst) som tilsyneladende er tom. Det ser dumt ud. Men det kan godt være, at løsningen slet ikke er DataGrid alligevel...
Avatar billede neverwho Nybegynder
10. november 2003 - 12:11 #5
er det egentlig ikke ligegyldigt med id hvis det kun er dig der skal se det?
Avatar billede el_fredo Praktikant
10. november 2003 - 12:31 #6
Jo, i princippet er det... Jeg kan bare godt lide at lave tingene så de ser pæne ud, men jo - du har ret.
Avatar billede finger Nybegynder
10. november 2003 - 15:55 #7
Du kan både i winforms og i webforms (hvilket er det?) bruge datagridtablestyle hvorigennem du kan definere hvilke kolonner der skal vises og hvilke der skal skjules (samt en masse andre layout ting).
Det er løsningen på dit problem.
Jeg kan smække et hurtigt eksempel sammen i en winform hvis det har interesse.
Avatar billede finger Nybegynder
11. november 2003 - 09:19 #8
-------------form1---------------
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WindowsApplication9
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.DataGrid dataGrid1;
        private WindowsApplication9.Dataset1 dataset11;
        private System.Windows.Forms.DataGrid dataGrid2;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.DataGridTableStyle dataGridTableStyle1;
        private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn1;
        private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn2;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.dataGrid1 = new System.Windows.Forms.DataGrid();
            this.dataset11 = new WindowsApplication9.Dataset1();
            this.dataGrid2 = new System.Windows.Forms.DataGrid();
            this.label1 = new System.Windows.Forms.Label();
            this.label2 = new System.Windows.Forms.Label();
            this.button1 = new System.Windows.Forms.Button();
            this.dataGridTableStyle1 = new System.Windows.Forms.DataGridTableStyle();
            this.dataGridTextBoxColumn1 = new System.Windows.Forms.DataGridTextBoxColumn();
            this.dataGridTextBoxColumn2 = new System.Windows.Forms.DataGridTextBoxColumn();
            ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.dataset11)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.dataGrid2)).BeginInit();
            this.SuspendLayout();
            //
            // dataGrid1
            //
            this.dataGrid1.DataMember = "";
            this.dataGrid1.DataSource = this.dataset11.myTable;
            this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
            this.dataGrid1.Location = new System.Drawing.Point(40, 80);
            this.dataGrid1.Name = "dataGrid1";
            this.dataGrid1.Size = new System.Drawing.Size(408, 152);
            this.dataGrid1.TabIndex = 0;
            //
            // dataset11
            //
            this.dataset11.DataSetName = "Dataset1";
            this.dataset11.Locale = new System.Globalization.CultureInfo("en-US");
            //
            // dataGrid2
            //
            this.dataGrid2.DataMember = "";
            this.dataGrid2.DataSource = this.dataset11.myTable;
            this.dataGrid2.HeaderForeColor = System.Drawing.SystemColors.ControlText;
            this.dataGrid2.Location = new System.Drawing.Point(48, 272);
            this.dataGrid2.Name = "dataGrid2";
            this.dataGrid2.Size = new System.Drawing.Size(400, 136);
            this.dataGrid2.TabIndex = 1;
            this.dataGrid2.TableStyles.AddRange(new System.Windows.Forms.DataGridTableStyle[] {
                                                                                                  this.dataGridTableStyle1});
            //
            // label1
            //
            this.label1.Location = new System.Drawing.Point(216, 248);
            this.label1.Name = "label1";
            this.label1.TabIndex = 2;
            this.label1.Text = "Med tablestyle";
            //
            // label2
            //
            this.label2.Location = new System.Drawing.Point(200, 56);
            this.label2.Name = "label2";
            this.label2.TabIndex = 3;
            this.label2.Text = "uden tablestyle";
            //
            // button1
            //
            this.button1.Location = new System.Drawing.Point(208, 8);
            this.button1.Name = "button1";
            this.button1.TabIndex = 4;
            this.button1.Text = "Load data";
            this.button1.Click += new System.EventHandler(this.button1_Click);
            //
            // dataGridTableStyle1
            //
            this.dataGridTableStyle1.DataGrid = this.dataGrid2;
            this.dataGridTableStyle1.GridColumnStyles.AddRange(new System.Windows.Forms.DataGridColumnStyle[] {
                                                                                                                  this.dataGridTextBoxColumn1,
                                                                                                                  this.dataGridTextBoxColumn2});
            this.dataGridTableStyle1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
            this.dataGridTableStyle1.MappingName = "myTable";
            //
            // dataGridTextBoxColumn1
            //
            this.dataGridTextBoxColumn1.Format = "";
            this.dataGridTextBoxColumn1.FormatInfo = null;
            this.dataGridTextBoxColumn1.HeaderText = "MyRow2";
            this.dataGridTextBoxColumn1.MappingName = "MyRow2";
            this.dataGridTextBoxColumn1.Width = 75;
            //
            // dataGridTextBoxColumn2
            //
            this.dataGridTextBoxColumn2.Format = "";
            this.dataGridTextBoxColumn2.FormatInfo = null;
            this.dataGridTextBoxColumn2.HeaderText = "MyRow4";
            this.dataGridTextBoxColumn2.MappingName = "MyRow4";
            this.dataGridTextBoxColumn2.Width = 75;
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(496, 438);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.label2);
            this.Controls.Add(this.label1);
            this.Controls.Add(this.dataGrid2);
            this.Controls.Add(this.dataGrid1);
            this.Name = "Form1";
            this.Text = "Form1";
            ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.dataset11)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.dataGrid2)).EndInit();
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            Dataset1.myTableRow row = dataset11.myTable.NewmyTableRow();
            row.MyRow1 = "hej1";
            row.MyRow2 = "hej2";
            row.MyRow3 = "hej3";
            row.MyRow4 = "hej4";
            dataset11.myTable.AddmyTableRow(row);

            row = dataset11.myTable.NewmyTableRow();
            row.MyRow1 = "hej1";
            row.MyRow2 = "hej2";
            row.MyRow3 = "hej3";
            row.MyRow4 = "hej4";
            dataset11.myTable.AddmyTableRow(row);

            row = dataset11.myTable.NewmyTableRow();
            row.MyRow1 = "hej1";
            row.MyRow2 = "hej2";
            row.MyRow3 = "hej3";
            row.MyRow4 = "hej4";
            dataset11.myTable.AddmyTableRow(row);
        }
    }
}
Avatar billede finger Nybegynder
11. november 2003 - 09:19 #9
--------------dataset1.xsd--------------
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="Dataset1" targetNamespace="http://tempuri.org/Dataset1.xsd" elementFormDefault="qualified"
    attributeFormDefault="qualified" xmlns="http://tempuri.org/Dataset1.xsd" xmlns:mstns="http://tempuri.org/Dataset1.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="Dataset1" msdata:IsDataSet="true">
        <xs:complexType>
            <xs:choice maxOccurs="unbounded">
                <xs:element name="myTable">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="MyRow1" type="xs:string" minOccurs="0" />
                            <xs:element name="MyRow2" type="xs:string" minOccurs="0" />
                            <xs:element name="MyRow3" type="xs:string" minOccurs="0" />
                            <xs:element name="MyRow4" type="xs:string" minOccurs="0" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
        </xs:complexType>
    </xs:element>
</xs:schema>
Avatar billede el_fredo Praktikant
11. november 2003 - 10:13 #10
Øh, det er winforms. Tak for svaret. Jeg kigger lige på det.
Avatar billede finger Nybegynder
12. november 2003 - 10:44 #11
lykkedes det?
Avatar billede el_fredo Praktikant
12. november 2003 - 11:37 #12
Jeg har ikke lige fået det testet endnu. Jeg har været på arbejde, men jeg skal nok lige kigge på det snarest.
Avatar billede el_fredo Praktikant
12. november 2003 - 11:44 #13
Jeg får fejl under kompilering i forbindelse med Dataset11 og dataset1.

"Dataset1 does not exist in the namespace WindowsApplication9 (are you missing an assembly reference?)"

"The variable Dataset11 is either undeclared or was never assigned"

"The variable Dataset11 is either undeclared or was never assigned"

"Could not find 'Dataset1'. Please make sure that..."

Fejlene er cirka som de står i VS.NET.
Avatar billede finger Nybegynder
12. november 2003 - 12:02 #14
ah. det er fordi jeg her har brugt et typed dataset.
tilføje et nyt dataset (under project-->add new item-->DataSet) og erstat xml'en i det nye dataset med det jeg har sat ind.
Avatar billede sneaky Nybegynder
17. november 2003 - 16:44 #15
Loool, Ill be goddamned...

Har du også lidt tid ind imellem knokleriet til at hjælpe .Net folket finger? ;-)

Hygge du

:-)
Avatar billede finger Nybegynder
17. november 2003 - 16:52 #16
det bliver man sgu nødt til ,hvis man skal overleve dokumenterings helvedet!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester