Announcement

Collapse
No announcement yet.

Datagrid: Problem bei erstellen einer ButtonColumn per Code behind

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datagrid: Problem bei erstellen einer ButtonColumn per Code behind

    Hallo NG,

    ich habe per Codebehind eine neue Buttoncolumn in einem Datagrid erzeugt:

    dim cl as new buttoncolumn()

    cl.commandname="Select"
    cl.datatextfield="Name"
    datagrid1.columns.add(cl)

    Im ASPX-Code steht beim Datagrid der Eintrag " onItemCommand="itemcomman"

    im CodeBehind ist diese auch vorhanden:

    sub itemCommand(ByVal sender as object, ByVal e as Datagridcommandeventargs) handles datagrid1.itemcommand
    response.write "test"
    end sub

    Leider wird das Ereignis onItemCommand nicht aufgerufen. Wenn ich eine Spalte im ASPX-Code hinzufüge wird das Ereignis aufgerufen. Was mache ich falsch?

    Gruß
    Thomas

  • #2
    Hat denn dieses Problem ausser mir niemand?

    Comment


    • #3
      Hallo,

      normalerweise nutzt man doch in VS.NET die Vorteile der visuellen Gestaltung über den speziellen Property Editor-Dialog des DataGrids im Web Form Designer aus. Und bei diesen Template Columns tritt das geschilderte Problem nicht auf.

      Beim Web Form gibt es ja die Besonderheit, dass der Button-Klick auf der Client-Seite im Browser erfolgt und der eigene ASP.NET-Code erst nach dem PostBack ins Spiel kommt. Daher kann die Ereignisbehandlungsmethode nur dann funktionieren, wenn auch der ViewState so transportiert/wiederhergestelt wird, das die beim PostBack "ofenfrisch" erzeugte Instanz das Ereignis überhaupt mitbekommt. Dazu wird üblicherweise ein Aufruf a la <i>output.AddAttribute("onClick", Page.GetPostBackEventReference(Me, xyt))</i> hinzugefügt. Wenn man alles im eigenen Sourcecode machen will, muss man sich um <b>GetPostBackEventReference</b> selbst kümmern. Die Methode GetPostBackEventReferences der Page-Klasse sorgt dafür, dass ASP.NET automatisch ein Client-Script (JavaScript) generiert und auch an der Aufrufstelle dieses Script automatisch einbindet.
      &#10

      Comment


      • #4
        Hallo NG,

        es fehlt einfach der Eintrag <br><br>
        <font face=verdana size=1>
        <b>ADDHANDLER</b> <i> "oncommand",
        <b>ADRESSOF</b> "codebehind_prozedurname"</i><br><br>
        </font>
        und schon wird die entsprechende Ereignisprozedur beim "Select-Command" des Datagrids aufgerufen.

        Gruß<br>
        <i>Thomas</i>
        &#10

        Comment

        Working...
        X