2016-04-26 1 views
2

Ich erhalte eine Reihe von Werten aus meiner Datenbank. Ich verwende eine HTML-Tabelle, um diese abgerufenen Werte anzuzeigen. Alle diese werden über eine Funktion ausgeführt und ich rufe diese Funktion von der ASPX-Seite auf. Meine Frage ist, wie ich die gleiche Funktion über eine Schaltfläche (mit der On_Click-Methode) aufrufen, anstatt sie auf der aspx-Seite aufzurufen.Verwenden einer HTML-Schaltfläche zum Aufrufen einer Methode ASP .NET

C# Codebeispiel:

public string getWhileLoopData() 
{ 
     string htmlStr = ""; 
     SqlConnection thisConnection = new SqlConnection(dbConnection); 
     SqlCommand thisCommand = thisConnection.CreateCommand(); 
     thisCommand.CommandText = "SELECT * from Test"; 
     thisConnection.Open(); 
     SqlDataReader reader = thisCommand.ExecuteReader(); 

     while (reader.Read()) 
     { 
      int id = reader.GetInt32(0); 
      string Name = reader.GetString(1); 
      string Pass = reader.GetString(2); 
      htmlStr +="<tr><td>"+id+"</td><td>"+Name+"</td><td>"+Pass+"</td></tr>"     
     } 

     thisConnection.Close(); 
     return htmlStr; 
} 

ASPX Codebeispiel:

<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/test.master" CodeFile="test.aspx.cs" Inherits="test" %> 

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="ContentPlaceHolder"> 
    <table width="100%" align="center" cellpadding="2" cellspacing="2" border="0" bgcolor="#EAEAEA" > 
     <tr align="left" style="background-color:#004080;color:White;" > 
      <td> ID </td>       
      <td> Name </td>    
      <td>Pass</td>       
     </tr> 

     <%=getWhileLoopData()%> 

    </table> 
</asp:Content> 

Also im Grunde möchte ich eine Taste auf der ASPX-Seite platzieren und <%=getWhileLoopData()%> über diese Taste aufrufen.

Vielen Dank.

+0

Sie nicht Code hinter Funktionen von der Seite so aufrufen. Warum sollte es am Anfang nicht vollständig geladen werden? – Alexander

+0

Ich musste eine Schaltfläche verwenden, um eine ähnliche Abrufoperation unter Verwendung der gleichen Tabellen, aber nur mit einer anderen Abfrage durchzuführen. Wie in, Angenommen, ich benutze SELECT * FROM

Operation zuerst und für die nächste wollte ich eine Select-Abfrage mit einigen Where-Klauseln verwenden. @Alexander – Prithvi

+0

Haben Sie versucht, nur eine asp: Schaltfläche zu implementieren und Ihre Daten (Filterung?) Auf den Code hinter Click-Ereignis? – Alexander

Antwort

-1

Verwenden Sie den Repeater zum Rendern von wiederholtem HTML, anstatt Ihre HTML-Zeichenfolge im Code hinter der Datei zu erstellen und sie dann in die ASPX-Datei zu rendern. Repeater ist schnell und einfach zu handhaben.

<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/test.master" CodeFile="test.aspx.cs" Inherits="test" %> 
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="ContentPlaceHolder"> 
    <asp:Repeater id="myRpt" runat="server"> 
     <HeaderTemplate> 
      <table width="100%" align="center" cellpadding="2" cellspacing="2" border="0" bgcolor="#EAEAEA" > 
       <tr align="left" style="background-color:#004080;color:White;" > 
        <td> ID </td> 
        <td> Name </td> 
        <td>Pass</td> 
       </tr> 
     </HeaderTemplate> 
     <ItemTemplate> 
     <tr> 
     <td><%# Eval("ID") %></td> 
     <td><%# Eval("Name") %></td> 
     <td><%# Eval("Pass") %></td> 
     </tr> 
     </ItemTemplate> 
     <FooterTemplate> 
     </table> 
     </FooterTemplate> 
    </asp:Repeater> 
</asp:Content> 

In Ihrem Code hinter Datei

SqlConnection thisConnection = new SqlConnection(dbConnection); 
     SqlCommand thisCommand = thisConnection.CreateCommand(); 
     thisCommand.CommandText = "SELECT * from Test"; 
     thisConnection.Open(); 
     SqlDataReader reader = thisCommand.ExecuteReader(); 

myRpt.DataSource = reader ; 
     myRpt.DataBind(); 
+0

Während technisch korrekt, sehe ich nicht, was es mit der Frage zu tun hat. – Alexander

+0

Es ist keine gute Übung, HTML von einem String-Objekt zu ma- chen, da beim Verknüpfen von Strings in einer Schleife die N-Nummer der Objektreferenz erstellt wird. Das ist kein guter Ansatz. @Alexander –

+0

Wie erstellt es Objektreferenzen? – Alexander

0

Eine Möglichkeit ist, ein normales asp.net button zu bedienen und die Ergebnisse auf einem literal

<asp:Literal runat="server" ID="txtOnMe" EnableViewState="false"></asp:Literal> 
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> 

und auf Code machen hinter

protected void Button1_Click(object sender, EventArgs e) 
{ 
    txtOnMe.Text = getWhileLoopData() ; // "text to show"; 
} 

Es gibt auch andere Möglichkeiten ... das ist die am nächsten zu asp.net

Verwandte Themen