Entwickler-Ecke

ASP.NET und Web - OnButtonClick Methode festlegen


Bergmann89 - Do 22.04.10 15:52
Titel: OnButtonClick Methode festlegen
Hey,

ich hab mir in meiner ASPX n Button un ein paar Textfelder erstellt und nun möchte ich eine Methode aus der CS-Datei aufrufen, wenn auf den Button geklickt wird. Wenn ich Doppelklick auf den Button mach, dann erstelt er mir in der ASPX-Datei immer ein JavaScript. Und wenn ich die Methode manuell zuweise, dann passiert nix wenn ich auf den Button klick. Hier ma der Quelltext der beiden Datein:
ASPX:

XML-Daten
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:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="LagerVerwaltung._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
    <style type="text/css">
        #form1
        {
            height: 90px;
            width: 330px;
        }
        #LoginBt
        {
            width: 80px;
        }
        #AbortBt
        {
            width: 80px;
        }
    </style>

</head>
<body>
    <form id="form1" runat="server">    
        <div><b>LagerLogin:</b></div>
        <table>
            <tr>
                <td>Name:</td>    
                <td><input id="NameIn" maxlength="20"/></td>
                <td><button id="LoginBt" title="Login" onclick="LoginBtClick">Login</button></td>
            </tr>
            <tr>
                <td>Passwort:</td>
                <td><input id="PasswortIn" /></td>          
                <td><button id="AbortBt" title="Abbrechen">Abbrechen</button></td>
            </tr>
         </table>
    </form>
</body>
</html>
CS:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace LagerVerwaltung
{    
    public partial class _Default : System.Web.UI.Page
    {
        protected void LoginBtClick(object sender, EventArgs e)
        {
            using (Database db = new Database(Database.LOCAL_CONNECTION_STRING))
            {
                //SQL-BEFEHLE
            }
        }
    }
}

Kann mir da jmd helfen?

MfG & Thx Bergmann


Kha - Do 22.04.10 16:02

Ich kenne mich mit Webforms (*brr*) nicht besonders aus, aber ich glaube, wenn du Server-Code willst, brauchst du auch das entsprechende Server-Control: einen asp:Button.


danielf - Do 22.04.10 16:08

Er erstellt dir eine JavaScript-Funktion? Das bezweifle ich ;)

Leider gibt es keine Designer Unterstützung wie bei WinForms. Deshalb musst du selber bei Button ein Attribute onclick erstellen (Intellisense hilft). Dort trägst du dann den Methodennamen ein, den du willst das er aufgerufen wird.

Die Methode muss folgende Deklaration haben:

C#-Quelltext
1:
2:
3:
4:
internal void <name>(object sender, EventArgs e)
{

}


Das sollte funktionieren.

Und wie kha anmerkte ist es besser, wenn du gleich asp-Server Tags verwendest. Sprich asp:Button und asp:Table etc. etc.

Gruß


Kha - Do 22.04.10 16:18

user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
Er erstellt dir eine JavaScript-Funktion? Das bezweifle ich ;)
Da input.onclick ein JS-Event ist und auch unter Webforms eines bleibt (und deshalb auch nie Server-Code ausführen wird), ist das vielleicht gar keine so dumme Idee :idea: . Und ja, ich hab's nachgeprüft ;) .

user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
Leider gibt es keine Designer Unterstützung wie bei WinForms.
Äh, der unter "Design"/"Split" zählt nicht :nixweiss: ? Ich dachte immer, darauf wären die Webforms-Leute so stolz :D .


danielf - Do 22.04.10 16:22

Ja das ist klar. Ich meinte das er kein

Quelltext
1:
2:
3:
<script language="javascript" type="text/javascript">
   function OnClick( ...
</script>


anlegt ...

Nee der zählt nicht ... ;)


Kha - Do 22.04.10 19:35

Stimmt, er legt

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    <script language="javascript" type="text/javascript">
// <![CDATA[

        function Button1_onclick() {

        }

// ]]>
    </script>
</asp:Content>
an :D .


Bergmann89 - Fr 23.04.10 09:00

Hey,

bei mir legt er das auch alles fein an, wie Kha es schon gepostet hat. Ich hab dann noch das protected bei mir in ein internal umgeändert, aber das hat nich geholfen, er springt immer noch nich in die Methode rein :(

MfG Bergmann.


Kha - Fr 23.04.10 11:48

Meine Beiträge hast du dir durchgelesen :gruebel: ? onclick ist ein Javascript-Event, da kannst du lange darauf warten, dass es C#-Code anspringt. Du brauchst einen asp:Button. Bei dem sollte ein Doppelklick dann auch wirklich C#-Code anlegen.


Bergmann89 - Fr 23.04.10 15:17

Ah alles klar, jetzt hab ich das verstanden. Ich dachte das wäre das selbe, weil der Button ja schon in der ASPX steht^^
So gehts jetz:

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
<body>
    <form id="form1" runat="server">    
        <div><b>LagerLogin:</b></div>
        <table>
            <tr>
                <td>Name:</td>    
                <td><input id="NameIn" maxlength="20"/></td>
                <td><asp:button id="LoginBt" Text="Login" runat="server" onclick="LoginBt_Click" /></td>
            </tr>
            <tr>
                <td>Passwort:</td>
                <td><input id="PasswortIn" /></td>          
                <td><asp:button id="AbortBt" Text="Abbrechen" onclick="AbortBt_Click" /></td>
            </tr>
         </table>
    </form>
</body>

Größes Danke an euch Beide ;)

MfG Bergmann