Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Egen knapp?

Postades av 2006-11-20 11:31:19 - Joachim Feldt, i forum asp.net generellt, Tråden har 9 Kommentarer och lästs av 523 personer

Hej!

Jag har ett par knappar där jag lagt in lite kod för att förhindra användaren från att kunna dubbelklicka på knappen.
Nu behövs detta göras på många ställen i applikationen och då tänkte jag att man kanske kunde göra en "egen" knapp som har dessa egenskaperna.
Problemet är att jag aldrig gjort någont sånt här.

Hur går man till väga? Jag antar att man börjar med att göra en klass som ärver "button", men sen tar det stopp.....

Koden på de enskilda knapparna ser ut så här:

btnSave.Attributes.Add("onclick", "DisableButton('" & btnSave.ClientID & "','Saving...');")

DisableButton är ett javascript som ligger i en extern js-fil och ser ut så här:
<code>
function DisableButton(btn,txt)
{
document.getElementById(btn).disabled = true;
document.getElementById(btn).value = txt;
__doPostBack(document.getElementById(btn).getAttribute('name'),"");
}
</code>
Den disablar alltså knappen och byter text(till "Saving..." i detta fall).
Så dena text bör man kunna ange i min "egna" knapp också.

Någon som kan hjälpa mig?

Jag kör VB.NET

/Jocke


Svara

Sv: Egen knapp?

Postades av 2006-11-21 17:13:23 - Pelle Johansson

Tror du kan göra det lite enklare...

sub knapptryck () ....
knapptryck.enabled = false

' utför lite rutiner här..

end sub


Svara

Sv:Egen knapp?

Postades av 2006-11-21 21:52:55 - Joachim Feldt

Tackar för svaret!

Men....

1. För det första får jag inte det att funka riktigt.
2. Vitsen med "klient-disabling" är att det sker med en gång. Som du skriver tar det en liten(om än väldigt liten stund) innan den disablas. Så man hinner dubbelklicka innan den disablas.

3. Sen om jag gör det på klienten, när sidan laddats klart får knappen sitt ursprungliga tillstånd, vilket är precis vad jag vill. Den ska ju bara vara disablad under tiden server-koden körs.
4. Om jag gör som du, antar jag att jag även får ta hand om vad som ska hända med knappen efteråt, eller?

Helst vill jag nog göra som jag beskrev. Fast om jag skulle göra efter ditt exempel, hur får jag in detta i en "egen" knapp? Jag vill ju inte lägga in den koden på alla mina knappar.

/Jocke


Svara

Sv: Egen knapp?

Postades av 2006-11-22 15:41:16 - Pelle Johansson

Du kan skapa/bygga en serverkontroll där du lägger koden, sen använder du den knappen och drar in på alla dina formulär i stället.


Svara

Sv:Egen knapp?

Postades av 2006-11-23 11:37:20 - Joachim Feldt

Japp, det är ju precis det jag frågar efter och behöver hjälp med....:)

Hur gör man det? (se överst i min ursprungsfråga)

/Jocke


Svara

Sv: Egen knapp?

Postades av 2006-11-27 08:24:37 - Joachim Feldt

Ingen??


Svara

Sv:Egen knapp?

Postades av 2006-11-27 13:14:03 - Oskar Johansson

1) Skapa en klass som ärver Button. Kör override på OnPreRender, lägg där till attributet för onclick, samt inkludera javascriptet på sidan med Page.ClientScript.Någont-Lämplig-Metod


Svara

Sv: Egen knapp?

Postades av 2006-11-28 16:58:56 - Joachim Feldt

Hej,
Tackar.

Det funkar inte riktigt.

Nu har jag gjort en klass som ser ut så här:

Imports System
Imports System.Web.UI.WebControls

Namespace MyControls.Web.UI.WebControls
    Public Class Knappen
        Inherits Button

        Private Shared functionName As String = "DisableButton"
        Private _DisabledText As String = ""

        Public Overridable Property DisabledText() As String
            Get
                Return _DisabledText
            End Get
            Set(ByVal Value As String)
                _DisabledText = Value
            End Set
        End Property

        Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs)
            MyBase.OnPreRender(e)

            Dim script As String
            script = "<script language=" & Chr(34) & "javascript" & Chr(34) & " type=" & Chr(34) & "text/javascript" & Chr(34) & ">" & vbCrLf
            script &= "function " & functionName & " (btn,txt) {" & vbCrLf
            script &= "document.getElementById(btn).disabled = true;" & vbCrLf
            script &= "document.getElementById(btn).value = txt;" & vbCrLf
            script &= "__doPostBack(document.getElementById(btn).getAttribute('name'),"");"
            script &= "} " & vbCrLf
            script &= "</script>"

            Me.Page.RegisterClientScriptBlock(functionName, script)

            Me.Attributes.Add("onclick", functionName + "('" + MyBase.ClientID + "','" + _DisabledText.ToString() + "')")
            
        End Sub
    End Class
End Namespace


Sen har jag lagt ut en knapp i formuläret.

När sidan laddas får jag "Unterminated string constant".

Om jag tar bort detta i koden och istället lägger javascriptet manuellt i html:en(inom <head>), funkar det perfekt.
Detta tar jag bort:
Dim script As String
            script = "<script language=" & Chr(34) & "javascript" & Chr(34) & " type=" & Chr(34) & "text/javascript" & Chr(34) & ">" & vbCrLf
            script &= "function " & functionName & " (btn,txt) {" & vbCrLf
            script &= "document.getElementById(btn).disabled = true;" & vbCrLf
            script &= "document.getElementById(btn).value = txt;" & vbCrLf
            script &= "__doPostBack(document.getElementById(btn).getAttribute('name'),"");"
            script &= "} " & vbCrLf
            script &= "</script>"

            Me.Page.RegisterClientScriptBlock(functionName, script)


Om jag tar View Source på dessa exemplen är enda skillnaden att på den som funkar hamnar javascriptet inom <head>, jag la ju det där manuellt...

När det skapas dynamiskt hamnar det nedanför <head>.

Javascriptet och anropen från knappen ser exakt likadant ut för övrigt.

Är det detta som är fel?
Hur får jag till det, i så fall, så att det hamnar inom <head>??

/Jocke


Svara

Sv:Egen knapp?

Postades av 2006-11-28 18:07:07 - Oskar Johansson

Om du måste skriva citattecken ("") i strängar i vb.net så måste du skriva dubbla cittattecken, dvs. för att skriva just: " så måste du skriva "". Det är det jag tror du gjort fel på. Ta dessutom och ersätt & chr-koden, den ser ful ut, är jobbig att läsa å drar ner prestandan ;)


Svara

Sv: Egen knapp?

Postades av 2006-11-28 21:16:37 - Joachim Feldt

Oskar,
Tackar för hjälpen!

När jag skrev så här funkar det perfekt:

Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs)
            MyBase.OnPreRender(e)

            Dim script As String
            script = "<script language=""javascript"" type=""text/javascript"">" & vbCrLf
            script &= "function " & functionName & "(btn,txt) {" & vbCrLf
            script &= "document.getElementById(btn).disabled = true;" & vbCrLf
            script &= "document.getElementById(btn).value = txt;" & vbCrLf
            script &= "__doPostBack(document.getElementById(btn).getAttribute('name'),'');"
            script &= "} " & vbCrLf
            script &= "</script>"

            Me.Page.RegisterClientScriptBlock(functionName, script)

            Me.Attributes.Add("onclick", functionName + "('" + MyBase.ClientID + "','" + _DisabledText.ToString() + "')")

        End Sub


Man bugar o bockar!

/Jocke


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 170
27 953
271 705
3 949
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies