C# 使用HTML按钮调用ASP.NET方法

C# 使用HTML按钮调用ASP.NET方法,c#,html,asp.net,webforms,C#,Html,Asp.net,Webforms,我正在从数据库中获取一组值。我正在使用一个HTML表来显示那些获取的值。所有这些都是通过一个函数执行的,我正在从ASPX页面调用该函数。我的问题是,如何使用On_Click方法通过按钮调用相同的函数,而不是在aspx页面上调用它 C代码示例: public string getWhileLoopData() { string htmlStr = ""; SqlConnection thisConnection = new SqlConnection(dbConn

我正在从数据库中获取一组值。我正在使用一个HTML表来显示那些获取的值。所有这些都是通过一个函数执行的,我正在从ASPX页面调用该函数。我的问题是,如何使用On_Click方法通过按钮调用相同的函数,而不是在aspx页面上调用它

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;
}
<%@ 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代码示例:

 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;
}
<%@ 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页面上放置一个按钮,并通过该按钮进行呼叫


谢谢。

使用repeater呈现重复的HTML,而不是在代码隐藏文件中生成HTML字符串,然后将其呈现到.ASPX文件中。中继器既快又容易操作

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

使用repeater呈现重复的HTML,而不是在代码隐藏文件中生成HTML字符串,然后将其呈现到.ASPX文件中。中继器既快又容易操作

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

一种方法是使用普通的asp.net按钮并在文本上呈现结果


还有其他的方法。。。这是最接近asp.net的一种方法,一种是使用普通的asp.net按钮并在文本上呈现结果


还有其他的方法。。。这是最接近asp.net的版本

您不会像这样从页面调用代码隐藏函数。为什么不让它在一开始就完全加载呢?我需要使用一个按钮来执行类似的获取操作,使用相同的表,但只使用不同的查询。如中所示,假设我首先使用SELECT*FROM操作,下一次使用带有where子句的SELECT查询@Alexander您是否尝试过实现一个asp:按钮并进行数据过滤?点击事件背后的代码?@Alexander我试着通过按钮调用它。虽然我没有收到任何错误,但在运行时数据没有显示在页面上。向我们展示您的尝试。您不会像那样从页面调用代码隐藏函数。为什么不让它在一开始就完全加载呢?我需要使用一个按钮来执行类似的获取操作,使用相同的表,但只使用不同的查询。如中所示,假设我首先使用SELECT*FROM操作,下一次使用带有where子句的SELECT查询@Alexander您是否尝试过实现一个asp:按钮并进行数据过滤?点击事件背后的代码?@Alexander我试着通过按钮调用它。虽然我没有收到任何错误,但在运行时数据没有显示在页面上。告诉我们您尝试了什么。虽然技术上是正确的,但我看不出这与问题有什么关系。从字符串对象生成html不是一个好的做法,因为在循环中连接字符串会创建N个对象引用。这不是一个好办法@Alexander它是如何创建对象引用的?虽然在技术上是正确的,但我不认为它与这个问题有什么关系。从字符串对象生成html不是一个好的实践,因为在循环中连接字符串会创建N个对象引用。这不是一个好办法@它是如何创建对象引用的?