2016-04-26 25 views
2

私のデータベースから値のセットを取得しています。私はHTMLテーブルを使用して、それらの取得された値を表示しています。これらはすべて関数を介して実行され、ASPXページからその関数を呼び出しています。私の質問は、aspxページで呼び出すのではなく、(On_Clickメソッドを使用して)ボタンを使用して同じ関数を呼び出す方法です。HTMLボタンを使用してメソッドを呼び出すASP .NET

C#のコードサンプル:

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コードサンプル:

<%@ 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> 

だから基本的に、私は、ASPXページ上のボタンを配置し、そのボタンを経由して <%=getWhileLoopData()%>を呼びたいです。

ありがとうございます。

+0

あなたはそのようなページからコードビハインド関数を呼び出さないでください。初めに完全にロードさせてみませんか? – Alexander

+0

ボタンを使用して、同じテーブルを使用して同じクエリを使用して同様のフェッチ操作を実行する必要がありました。たとえば、SELECT * FROM

オペレーションを最初に使用し、次のオペランドについては、Where句でSelectクエリを使用したいとします。 @Alexander – Prithvi

+0

「asp:button」を実装し、コードの後ろにクリックイベントのデータ(フィルタリング?)を実行しようとしましたか? – Alexander

答えて

-1

コードビハインドファイルでHTML文字列を作成し、それを.ASPXファイルにレンダリングする代わりに、リピートHTMLをレンダリングするためにリピーターを使用します。リピータは高速で扱いやすい。ファイルの後ろに

あなたのコードで
<%@ 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> 

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

技術的には間違いありませんが、質問とは何か関係がありません。 – Alexander

+0

Stringオブジェクトからhtmlを作成することは、ループ内の連結文字列がN個のオブジェクト参照を作成するのに適していません。それは良いアプローチではありません。 @Alexander –

+0

オブジェクト参照はどのように作成されますか? – Alexander

0

一つの方法は、通常のasp.net buttonを使用してliteral

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

protected void Button1_Click(object sender, EventArgs e) 
{ 
    txtOnMe.Text = getWhileLoopData() ; // "text to show"; 
} 
背後にあるコード上で結果をレンダリングすることです

他の方法もあります...これはasp.netに最も近いです

関連する問題