2011-01-06 1 views
0

ich ein Webformular before_adm.aspx.cs haben, die den Code hat, wie folgt:Aufruf einer C# Funktion in asp.net

. 
. 
. 
public partial class _Default : System.Web.UI.Page 
{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e) 
    { 
      DropDown abs =new DropDown(); 
      abs.DropDown(); 
    } 
..... 

ich eine Funktion DropDown nennen wollen(), die in der Datei DropDown.cs ist der Code in DropDown.cs ist wie folgt:

using System; 
using System.Configuration; 
using System.Data; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Xml.Linq; 
using System.Data.Odbc; 
using System.Data.SqlClient; 
using System.Collections; 
using System.IO; 
using iTextSharp.text.html.simpleparser; 
using iTextSharp.text; 
using iTextSharp.text.pdf; 
using iTextSharp.text.html; 

/// <summary> 
/// Summary description for DropDown 
/// </summary> 
public class DropDown 
{ 
    public DropDown() 
    { 
     try 
     { 

      OdbcConnection myConn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver};Server=10.155.160.130;Database=testcase;User=root;Password=;Option=3;"); 
      OdbcCommand myCmd = new OdbcCommand("select skey,casecode from casetype", myConn); 
      myConn.Open(); 
      OdbcDataReader myReader = myCmd.ExecuteReader(); 

      //Set up the data binding. 
      DropDownList3.DataSource = myReader; 
      DropDownList3.DataTextField = "skey"; 
      DropDownList3.DataValueField = "casecode"; 
      DropDownList3.DataBind(); 
      DropDownList3.Items.Insert(0, "<-- Select -->"); 

     } 
     catch (Exception ex) 
     { 
      Response.Write(ex.StackTrace); 
     } 

     if (DropDownList2.SelectedItem.Text == "Register") 
     { 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("STA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("STM")); 
     } 
     else if (DropDownList2.SelectedItem.Text == "Stamp") 
     { 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("WP")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("FA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("LPA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("SA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CP")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CAPL")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("MCA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CRA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("XFER")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("ARP")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("TXA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CRIR")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("WPCR")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("AO")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("AUA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CONP")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("ELEP")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("COAP")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("COA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("ARA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CREF")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("ITA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("AAR")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("XFA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("TACR")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("EXAP")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("COP")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("AUE")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("AUW")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CRMA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CAREV")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CONF")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("PILWP")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("SMWP")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("XOB")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("SMCP")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("AELEP")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("RUIT")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CS")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("RUCA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CRIA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CUSA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("EXA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("SMCRC")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("EA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CRMAB")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CRMAM")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("COAPM")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CPM")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("MCAM")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("AS")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("PILSM")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("CRREF")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("SMCR")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("AUSFC")); 

     } 
     else if (DropDownList2.SelectedItem.Text == "<-- Select -->") 
     { 
      DropDownList3.Items.Clear(); 
     } 
    } 

} 

, was ich bis jetzt gemacht haben, ist es richtig? Ich bekomme jetzt den Fehler:

The name 'DropDownList2' does not exist in the current context 
The name 'DropDownList3' does not exist in the current context 
The name 'Response' does not exist in the current context 

Ich möchte diese Funktion erstellen, weil ich viele solcher WebForms erstellt werden soll, und ich will auf die gleiche Funktion aufzurufen

DropDownList2_SelectedIndexChanged Was Parameter muss ich übergeben. Ich möchte den Weg kennen, um die Parameter zu übergeben. Bitte führen Sie mich. Ich möchte viele solche Funktionen in .cs-Datei erstellen, die viele andere Benutzersteuerelemente haben wird.

Antwort

1

Versuchen Sie, diese Art und Weise

public class DropDown 
{ 
    DropDownList dropDownList3 = null; 
    DropDownList dropDownList2 = null; 

    public DropDown() 
    { 
    } 

    public void Register(DropDownList dropDown2, DropDownList dropDown3) 
    { 
     this.dropDownList2 = dropDown2; 
     this.dropDownList3 = dropDown3; 
     // your code goes here 
    } 
} 

Verwenden HttpContext.Current.Response.Write

Verwenden Sie diese Klasse als

DropDown abs = new DropDown(); 
abs.Register(dropdown1, dropdown2); 

Versuchen Sie nicht, Code in Konstruktor zu schreiben, die

Ausnahme auslösen könnte
+0

Danke. Können Sie mir sagen, wie man "Editor1" als Parameter übergeben, ist es ein Ajax-Steuerelement. Ich bekomme den Fehler als: Der Name 'Editor1' nicht Existieren im aktuellen Kontext – Ishan

+0

Veröffentlichen Sie den Code Nicht in der Lage zu verstehen, was Editor ist und welches Objekt es enthält und von wo aus Sie anrufen Dropdown – hungryMind

+0

Ich habe pos ted als neue Frage: http: //stackoverflow.com/questions/4613603/error-in-asp-net-c/4613675#4613675 – Ishan

0

Wenn Sie geändert ausgewählten Index nennen Ereignis folgende Sie platzieren können manuell Code:

DropDownList2_SelectedIndexChanged(this,null); 
+0

immer noch der gleiche Fehler – Ishan

1

Sie dropDown als Parameter in Ihnen passieren shoud DropDown Methode:

DropDown abs =new DropDown((DropDownList)sender); 
.... 
public DropDown(DropDownList DropDownList2).. 

Und statt :

Response.Write 

verwenden:

HttpContext.Current.Response.Write 
+0

Error1 Der Name 'DropDownList3' existiert nicht in der Währung ent Kontext \t. Ich habe kopiert und eingefügt, was auch immer du antwortest. das dint work.Same Fehler wieder !! – Ishan

+0

Was ist DropDownList3 in Ihrem Fall? Wenn Sie brauchen, können Sie DropDownList3 als Parameter in die DropDown-Funktion auch übergeben ... –

2

Das Problem ist, dass die Drop-Down-Klasse nicht über einen Verweis auf DropDownList2, und es hat keinen Hinweis auf den ‚Antwort‘ denn das ist eine Eigenschaft auf der Seite Objekt. Wir können das beheben, indem wir einen Verweis auf die DropDownList und die Page übergeben und die Dinge ein wenig optimieren, um diese Variablen zu verwenden.

  1. ändern DropDown abs =new DropDown(); zu DropDown abs =new DropDown(this.DropDownList2, Page page);
  2. ändern public DropDown()-public DropDown(DropDownList DropDownList2, Page page)
  3. ändern Response.Write(ex.StackTrace);-page.Response.Write(ex.StackTrace); `

Wenn Sie immer noch verwirrt sind oder an dieser Stelle stecken zu bleiben, könnte es noch zu früh Damit Sie ASP.NET-Programme schreiben können - ich würde damit beginnen, die Grundlagen von C# und OO zu erlernen, indem ich einige Tutorials durchführe.

+0

") &;" erwartet auf der Codezeile Ihres 1. Punktes. und auch ein anderer Fehler Ungültiger Ausdruck ')' – Ishan

+0

Fehler 'DropDown' enthält keine Definition für 'DropDown' und es wurde keine Erweiterungsmethode 'DropDown' gefunden, die ein erstes Argument vom Typ 'DropDown' akzeptiert (fehlt Ihnen) eine using-Direktive oder eine Assembly-Referenz?) – Ishan

+0

Sie müssen auch den eingepackten Text kopieren, nicht nur die erste Zeile (DropDown abs = new DropDown (this.DropDownList2, '). Denken Sie durch. –

0

Ich denke, Sie versuchen, ein kaskadiertes Dropdown zu erreichen. Sie haben eine Dienstprogrammklasse DropDown.CS. Die Methode "Dropdown" ist ein Konstruktor und keine Methode, daher wird sie immer dann aufgerufen, wenn Sie das Klassen-Dropdown initialisieren. Der ausgewählte geänderte Index wird aufgerufen, wenn Sie das erste Dropdown-Menü ändern.

Ist das hilfreich?

+0

Also was brauche ich zu tun? Können Sie mir helfen? Ich bin ein Anfänger. – Ishan

0

Ich weiß nicht, ob es hilft, aber Sie können auch Erweiterungsmethoden verwenden, um die Funktionalität von Aktienklassen zu erweitern.