Von Button ableiten und ändern like OnPaint

lemon-tree

Grünschnabel
Schönen guten Abend liebe Tutorials.de Gemeinde.

Ich lese bei Fragen sehr oft in diesem Forum bzw. in den Tutorials. Bei der momentanen Frage komme ich jedoch seit einigen Tagen nicht weiter. Eigentlich ist sie ganz Simpel.
Ich will nur z.B. in einen Button ein Bild einfügen. Bei den Forms könnte man ja einfach Ableiten und dann OnPaint aufrufen. Wie sieht dies jedoch auf einer WebSite aus?

Also zur Umgebung. Das ganze ist eine einfache .aspx website, welche in C# programmiert ist. "Normale" Control-Elemente Dynamisch erzeugen ist soweit auch kein Problem. Das problem ist ich will jetzt nur noch ein Bild auf einen normalen Button setzten. Wie kann ich das machen? Ich bin für jeden Tipp dankbar, da ich wie gesagt, entweder die falschen Stichwörter gegooglet habe oder ich hier einfach auf die Nase gefallen bin, aber so schwer kann das doch nicht sein oder?

Viele Grüße Matthias :)
 
Hi

es gibt buttons, imagebuttons und linkbuttons. Auf einen normalen button kann man meines Wissens kein Bild setzen. Ich denke mal, dass musst Du Dir schon selbst basteln oder schauen, ob jemand es schon getan hat. Das Stichwort ist Composite control.

Control

Einfach mal etwas suchen, auch nach engl. sprachigen Begriffen.

Man kann aber auch aus Linkbutton mit asp:image und asp:label einen benutzerdefinierten Button bauen.

Bist übrigens im falschen Forum hier. Es gibt bei tutorials auch einen NET Bereich. :)
 
Zuletzt bearbeitet:
Hallo,

Vielen Dank für die Antwort, nach dem Stichwort werde ich natürlich gleich suchen.. könnte dann pls jemand diesen Thema in den .NET Teil dieses Forums schieben? Vielen Dank! :)

Der Link geht leider nicht, bei mir kommt da ein Critical Error...

Du hörst dich so an, als ob du etwas Ahnung von der Materie hättest.... hast du ein gutes Tutorial, beil bisher bin ich oft auf GoDotNet verwießen wurden, dies wurde ja aber leider geschlossen...

Einen schönen Abend noch, Matthias
 
Hi

also der Link funktioniert bei mir, hab es gerade noch mal ausprobiert.

Ich beschäftige mich sein rd. 1/2 Jahr mit asp.net, habe jetzt nicht wirklich richtig viel Ahnung. Routine habe ich in Classik ASP (dieses Forum).

Aber die Servercontrols in asp.net kann man erweitern, sprich über User-controls, benutzerdef. Controls bzw. composite Controls. Man muss einfach mal suchen bzw. über eine Anleitung selbst kreativ werden.

Ich habe z.B. neulich ein fertiges Composite Control gefunden, was Dropdownlist und Button in einem war. Ich konnte hier ein selectonchange auslösen und gleichzeitig ein commandargument übergeben. Super !!

na dann, viel Glück!

Achso, wg. dem Verschieben, enfach einen Moderator anschreiben. :)
 
Hi
Ich habe z.B. neulich ein fertiges Composite Control gefunden, was Dropdownlist und Button in einem war. Ich konnte hier ein selectonchange auslösen und gleichzeitig ein commandargument übergeben. Super !!

...hört sich sehr gut an, den Link hast du sicher nicht mehr oder die Datei?

Das mit dem Link irritiert mich etwas... ich hab ihn mit Opera, IE und dem Firefox probiert.. jedesmal kommt:

HTML:
 A critical error has occurred.
Hashtable insert failed. Load factor too high. 

--------------------------------------------------------------------------------
      Creating a Composite Control in Asp .Net

.codersource.net/asp-net/asp-net-advanced/creating-a-composite-control-in-asp-net.aspx?error=Hashtable+insert+failed.+Load+factor+too+high.&content=0
...also mit http://www, ist bei mir die Verlinkung... :(

Gruß Matthias
 
Hallo Luzie,

Das Beispiel des Joteke.Control's ist sehr interessant und geht auch in die richtige Richtung, so weit ich es verstehe... Jedoch bekomme ich es nicht zum laufen :(:confused: du hattest dich gestern bzw. heute so angehört, als ob du es schon am laufen hattest, könntest du es bitte noch einmal kurz für mich zusammenstellen und zum download bereitstellen? ich wäre dir extrem dankbar dafür! Im moment Fehlt mir einfach das Beispiel, an dem ich rumprobieren kann etc... :)

Viele Grüße Matthias :)
 
Hallo

also mit meinem Beispiel wirst Du nicht viel anfangen können, das ist in vb convertiert und da musste ich auch eine kleine Änderung vornehmen, die aber wohl darauf beruhte, dass der Converter nicht richtig "übersetzt" hatte.

Aber nochmal, das ist ein Steuerelement, was über eine Dropdownmenü sichtbar ist, nicht über den Button. Es hat nur den Vorteil, dass man die Buttoneigenschaften mit nutzen kann.

Ich nutze es wie folgt:

Ich habe ein Gridview, im itemtemplate liegt in einer Zeile dieses Steierelement als Dropdownmenü. Dort habe ich dann mehrere Listenpunkte integriert und frage diese Listenpunkte im RowCommand Event des Gridviews ab. Wichtig war für mich, dass ich über das commandargument verschiedene Werte mitgeben kann. z.B. die id. Über selectonchange springe ich dann in einem Wizard hin und her, wo mir dann unterschiedliche Formulare zur Verarbietung aufgerufen werden.

dies ist das Control
Code:
 <jc:CommandDropDown CommandName="wechsel"
  DataTextField="navText" AppendDataBoundItems="true" 
  DataValueField = "id" 
  DataSource= '<%# PopulateControls() %>'
  CommandArgument='<%# eval("kursid") & "|" & eval("themen") %>'
  ID="cd1" runat="server" AutoPostBack="true">
    <asp:ListItem Value="0" >-- Bearbeitung auswählen --</asp:ListItem>
   </jc:CommandDropDown>

und dies ist gridview rowCommand, wo ich dieses Steuerelement verarbeite.
Code:
  Sub grid_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)
        Dim gvRow As GridViewRow = _
                                  CType(CType(e.CommandSource, Control).NamingContainer, GridViewRow)

        'Dim gvRow As GridViewRow = CType(CType(sender, Control).Parent.Parent,  _
        'GridViewRow)

        Dim index As Integer = gvRow.RowIndex

        Dim row As GridViewRow = grid.Rows(index)


        Dim cmbType As DropDownList = _
                       DirectCast(row.FindControl("cd1"), DropDownList)

        'If e.CommandName = "Edit" Then
        '    cmbType.AutoPostBack = False
        '    cmbType.SelectedValue = 0
        'End If

        If e.CommandName = "wechsel" And e.CommandName IsNot "Edit" Then
            If e.CommandArgument IsNot Nothing Then
                Dim argument As String() = e.CommandArgument.split("|")

                Dim myID As Integer = Convert.ToInt32(argument(0))
                Dim myThema As String = argument(1)
                Me.tbKennziffer.Text = myID.ToString

                Me.lblSeminarThema.Text = "(" & argument(1).ToString & ")"

                If cmbType.SelectedValue > 0 Then
                    Me.Wizard1.ActiveStepIndex = cmbType.SelectedValue

                    Select Case cmbType.SelectedValue
                        Case 0
                            Me.lbltext.Text = "Daten ansehen und ändern"
                        Case 1
                            Me.lbltext.Text = "Neue Daten einfügen"
                            btncopy(myID.ToString)
                            cmbType.AutoPostBack = False
                        Case 2
                            Me.lbltext.Text = "Details einfügen"
                        Case 4
                            Hotelaufruf(getIsNumeric(Me.tbKennziffer.Text))
                            'Me.tbDokumenteID.Text = myID.ToString
                            '    getSeminarNichtInDetails(myID.ToString)
                            '    getSeminarInDetails(myID.ToString)
                    End Select
                    'Response.Write("selected Value: " & cmbType.SelectedValue & ", CommandArgument: " & e.CommandArgument)

                End If
            End If
        End If

Wie gesagt, die Klasse habe ich übernommen wie im Beispiel.

Einen kleinen Fehler hat das ganze aber noch, wenn ich das paging des Gridviews benutze, bekomme ich einen Fehler auf die 1. Zeile. Den muss ich allerdings noch recherchieren. Mit dem Fehler kann ich allerdings leben, da ich das paging so gut wie nie nutze und wenn ich es nicht ändern kann, nehme ich das Paging weg.
 
Hallo

wie per pn geschreiben, hänge ich Dir eine Demoversion an.
 

Anhänge

  • demo.zip
    181,7 KB · Aufrufe: 15

Neue Beiträge

Zurück