2016-05-18 11 views
1

Ich habe im Grunde eine Menge von Kontrollkästchen die gleiche Funktion aufrufen. Um die Aktion zu identifizieren, die jeder auslösen soll, habe ich daran gedacht, ein Argument für die Funktion zu übergeben, die ausgelöst wird.ASP.NET Webforms Kontrollkästchen Ereignis senden Argument

Meine Checkbox ist wie folgt aus:

protected void checkBoxRegularizarChangedEvent(object sender, EventArgs e) 
{ 
    CheckBox cb = (CheckBox)sender; 
} 

Wie kann ich senden und Informationen über EventArgs erhalten:

<asp:CheckBox ID="checkBoxRegul" runat="server" CssClass="" Visible="false" OnCheckedChanged='checkBoxRegularizarChangedEvent' AutoPostBack="True" /> 

Meine Funktion wie das ist?

Danke!

+0

Eine Möglichkeit, tue dies, um die ID des Absenders zu überprüfen, die du tun könntest, wenn du sie in den richtigen Typ umgewandelt hast. Anhand der ID können Sie dann bestimmen, was zu tun ist. Ich glaube nicht, dass Sie benutzerdefinierte Informationen direkt in das 'EventArgs'-Argument einfügen können. – Tim

+0

Ich bin mir nicht sicher, was Sie hier tun, aber aus dem, was ich erfahre, sollten Sie in eine Javascript-Lösung suchen. – prospector

Antwort

0

Sorry, Sie können nicht, EventArgs hat keine Eigenschaft zu halten, was Sie wollen.

Sie müssen jedes Kontrollkästchen verschiedenen Ereignisbehandlungsroutinen zuordnen oder den Wert Ihrer Kontrollkästchen in checkBoxRegularizarChangedEvent überprüfen.

Oder ... wie Tim sagte, könnten Sie die Absenderklasse überprüfen.

Es gibt keine "richtige" Antwort, es hängt von Ihren Bedürfnissen ab.

Ich hoffe, es hilft.

0

Es ist nicht einfach, aber es ist machbar. EventArgs (e) kann zusätzliche Informationen nicht direkt speichern, Sie können jedoch ein benutzerdefiniertes Steuerelement mit einem benutzerdefinierten Ereignis erstellen, das zusätzliche Informationen enthalten kann.

Schritt 1: Erstellen Sie eine CheckBoxEventArgs Klasse, die von EventArgs() erbt. Fügen Sie öffentliche Eigenschaften hinzu, um die benötigten Informationen zu speichern.

public class CheckBoxEventArgs: EventArgs 
{ 
    public string ValueOne { get; set; } 
    public string ValueTwo { get; set; } 

} 

Schritt 2: eine benutzerdefinierte .ascx Steuerung zu einem Projekt (CustomCheckBox.ascx) hinzufügen. Fügen Sie ein Kontrollkästchen zum HTML hinzu.

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CustomCheckBox.ascx.cs" Inherits="CustomControls.CustomCheckBox" %> 
<asp:CheckBox ID="chkCheckBox" runat="server" OnCheckedChanged="chkCheckBox_CheckedChanged" ValueOne="one" ValueTwo="two" /> 

die Code-Behind-Passen Sie wie folgt vor:

Eigenschaften
  • Definieren Sie die CheckChanged Ereignis mit einem benutzerdefinierten Eventhandler
  • hinzufügen die benutzerdefinierten Checkbox
  • Werte speichern
  • eine Text Eigenschaft hinzufügen und den Wert passieren Zum Kontrollkästchen Text
  • Reagieren Sie das CheckChanged-Ereignis und erhöhen Sie Ihr benutzerdefiniertes Ereignis

    //CustomCheckBox.cs

    public partial class CustomCheckBox: System.Web.UI.UserControl {

    public event EventHandler<CheckBoxEventArgs> CheckChanged; 
    
    public string ValueOne { get; set; } 
    public string ValueTwo { get; set; } 
    
    public string Text 
    { 
        get { return chkCheckBox.Text; } 
        set { chkCheckBox.Text = value; } 
    } 
    
    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 
    
    protected void chkCheckBox_CheckedChanged(object sender, EventArgs e) 
    { 
    
        if (CheckChanged != null) 
        { 
         var args = new CheckBoxEventArgs() 
         { 
          ValueOne = this.ValueOne, 
          ValueTwo = this.ValueTwo 
         }; 
         CheckChanged(this, args); 
        } 
    
    } 
    

    }

Schritt 3: Fügen Sie die CustomCheckBox.ascx zu Ihre Seite und registrieren Sie das OnCheckChanged-Ereignis.

<%@ Register src="CustomCheckBox.ascx" tagname="CustomCheckBox" tagprefix="uc1" %> 
... 
<uc1:CustomCheckBox ID="CustomCheckBox1" runat="server" OnCheckChanged="CustomCheckBox1_OnCheckChanged" /> 

Add Code an der Code-Behind-Seite zu Ihrem benutzerdefinierten checkchanged Ereignisse, zu reagieren und die benutzerdefinierten Werte verwenden (sie direkt von dem customEventArgs zur Verfügung, die Ihr erstellt hat (e))

public partial class PageOne : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void CustomCheckBox1_OnCheckChanged(object sender, CheckBoxEventArgs e) 
    { 
     var val1 = e.ValueOne; 
     var val2 = e.ValueTwo; 

     //use custom values 
    } 
}