Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
dynamisch Checkboxen einem GridView hinzufügen?
AlexK
myCSharp.de - Member



Dabei seit:
Beiträge: 46

Themenstarter:

dynamisch Checkboxen einem GridView hinzufügen?

beantworten | zitieren | melden

Hallo!

Ich baue mir meinen GridView dynamisch zusammen:


BoundField newColumn = new BoundField();
newColumn.DataField = Datafield.ToString();
.
.
GridView1.Columns.Add(newColumn);
Das klappt auch wunderbar. Aber wie bekomme ich aber einen Checkbox ins GridView1 rein?

Gruß, Alex
private Nachricht | Beiträge des Benutzers
schaedld
myCSharp.de - Member

Avatar #avatar-2533.jpg


Dabei seit:
Beiträge: 1.433
Herkunft: Schweiz

beantworten | zitieren | melden

Entweder duruch TemplateColumns mit ItemTemplates oder Du machst im RowDataBound Ereignis des GridViews eine neue Checkbox und fügst diese der ControlsCollection der jeweiligen Row hinzu.
Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt
private Nachricht | Beiträge des Benutzers
AlexK
myCSharp.de - Member



Dabei seit:
Beiträge: 46

Themenstarter:

beantworten | zitieren | melden

Hast du evtl. für ersteres ein Beispiel parat?

gruß, Alex
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo Alex

Du brauchst eine TemplateField Instanz und dieser musst du eine Instanz vom Typ ITemplate zuweisen, die das Template enthält.
Damit du so ein Objekt erhältst, musst du eine Klasse erstellen die ITemplate implementiert.

- http://msdn.microsoft.com/de-de/library/system.web.ui.webcontrols.templatefield(VS.80).aspx
- http://msdn.microsoft.com/en-us/library/system.web.ui.itemplate.aspx


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
AlexK
myCSharp.de - Member



Dabei seit:
Beiträge: 46

Themenstarter:

beantworten | zitieren | melden

Hallo Peter,

danke für deine Antwort!
Mist, ich hätte gehofft, das geht einfacher... hmmm, dann muss ich mich dort wohl oder übel einlesen... X(

Gruß, Alex
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo Alex

Es ist gar nicht so schwer.
Wenn du das nicht codeseitig machst, erstellt dir ASP.NET dynamisch die Implementationen für ITemplate (Halt das was du per ASPX-Code in den Template Teil schreibst).

So musst du halt das Template per Code selber füllen.


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
AlexK
myCSharp.de - Member



Dabei seit:
Beiträge: 46

Themenstarter:

beantworten | zitieren | melden

Hallo!

So, jetzt hab ich meine Checkboxen im GridView.
Eine Frage hätte ich aber noch.
Wie kann ich den VALUE Wert für die einzelnen Checkboxen setzten? Ich wollte das RowCreated-Event verwenden, aber irgendwie funktioniert das nicht.
Mein aktuller Code:

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                GridViewRow _gr = (GridViewRow)e.Row;
                CheckBox cb = (CheckBox)_gr.FindControl("GridViewCheckBox");
                if (cb != null)
                {
                    cb.Attributes.Add("value", "<Wert>");
                    cb.Attributes.Add("onclick", "showValue(this)");
                }
            }
        }

Wenn ich dann per JavaScript (function showValue) den Value-Wert abfragen will, bekomm ich nur "on"?!
Hab ich noch irgendwo einen Denkfehler???

Grüße, Alex
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo AlexK

<CheckBox>.Checked = true / false?


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
AlexK
myCSharp.de - Member



Dabei seit:
Beiträge: 46

Themenstarter:

beantworten | zitieren | melden

fast...

ich wollte aber nicht die Eigenschaft CHECKED, sondern VALUE.
Hab's mittlerweile selber rausgefunden. Statt CHECKBOX nimmt man HTMLINPUTCHECKBOX:

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                GridViewRow _gr = (GridViewRow)e.Row;
                HtmlInputCheckBox cb = (HtmlInputCheckBox)_gr.FindControl("GridViewCheckBox");
                if (cb != null)
                {
                    cb.Attributes.Add("value", "<Wert>");
                 }
            }
        }

Danke aber für deine Mühe!
Alex
private Nachricht | Beiträge des Benutzers