tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
972
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    lemon-tree lemon-tree ist offline Rookie
    Registriert seit
    Jan 2010
    Beiträge
    6
    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
     

  2. #2
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    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.
    Geändert von Luzie (24.04.10 um 01:39 Uhr)
     
    liebe Grüße, die Luzie

  3. #3
    lemon-tree lemon-tree ist offline Rookie
    Registriert seit
    Jan 2010
    Beiträge
    6
    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
     

  4. #4
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    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.
     
    liebe Grüße, die Luzie

  5. #5
    lemon-tree lemon-tree ist offline Rookie
    Registriert seit
    Jan 2010
    Beiträge
    6
    Zitat Zitat von Luzie Beitrag anzeigen
    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-Code:
     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
     

  6. #6
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Hi

    mich irritiert das auch, keine Ahnung warum das so ist. Bei funktioniert das, kann den Fehler auch nicht provozieren. Vllt. gebietsabhängig. Ansonsten mal nach Fehler googlen.

    Hier nochmal 2 Links. (hoffe, du kannst sie lesen)
    wie man ein Control aufbaut
    und der Link auf Joteke.Control
    Geändert von Luzie (24.04.10 um 01:38 Uhr)
     
    liebe Grüße, die Luzie

  7. #7
    lemon-tree lemon-tree ist offline Rookie
    Registriert seit
    Jan 2010
    Beiträge
    6
    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 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
     

  8. #8
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    
     <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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    
      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.
     
    liebe Grüße, die Luzie

  9. #9
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Hallo

    wie per pn geschreiben, hänge ich Dir eine Demoversion an.
    Angehängte Dateien Angehängte Dateien
     
    liebe Grüße, die Luzie

Ähnliche Themen

  1. OnPaint problem
    Von 10110010 im Forum .NET Grafik und Sound
    Antworten: 4
    Letzter Beitrag: 11.02.09, 20:00
  2. GDI+ Grafik / OnPaint
    Von TheShihan im Forum VisualStudio & MFC
    Antworten: 7
    Letzter Beitrag: 27.02.08, 10:04
  3. OnPaint event hook
    Von KainPlan im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 26.02.08, 11:44
  4. OnPaint() selbst auslösen
    Von ensae im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 27.02.04, 18:28
  5. Button Farbe Ändern
    Von eDreamer im Forum Delphi, Kylix, Pascal
    Antworten: 3
    Letzter Beitrag: 22.03.03, 23:36