我正在尝试通过将 C# 变量传递给这些按钮来动态更改网页上 5 个 HTML 按钮的文本/值。我在页面加载时通过 SQL 查询生成变量,但不知道如何将变量传递给按钮。
变量生成:
DataSet ds= new DataSet();
DataTable dt= new DataTable();
connection.Open();
string commandstring = "SELECT TOP (5) [ButtonVal] FROM Table";
SqlDataAdapter adptr = new SqlDataAdapter(commandstring, connection);
adptr.Fill(ds);
dt = ds.Tables[0];
Btn1 = System.Convert.ToString(dt.Rows[0][0]);
Btn2 = System.Convert.ToString(dt.Rows[1][0]);
Btn3 = System.Convert.ToString(dt.Rows[2][0]);
Btn4 = System.Convert.ToString(dt.Rows[3][0]);
Btn5 = System.Convert.ToString(dt.Rows[4][0]);
HTML:
<table>
<tr>
<td><asp:Button ID="Button1" text="XXX" value ="XXX" style="font-size:8px;height:30px;width:60px" runat="server" AutoPostBack="true" OnClick="ChangeRedirect_Click" /> </td>
<td><asp:Button ID="Button2" text="XXX" value ="XXX" style="font-size:8px;height:30px;width:60px" runat="server" AutoPostBack="true" OnClick="ChangeRedirect_Click" /> </td>
<td><asp:Button ID="Button3" text="XXX" value ="XXX" style="font-size:8px;height:30px;width:60px" runat="server" AutoPostBack="true" OnClick="ChangeRedirect_Click" /> </td>
<td><asp:Button ID="Button4" text="XXX" value ="XXX" style="font-size:8px;height:30px;width:60px" runat="server" AutoPostBack="true" OnClick="ChangeRedirect_Click" /> </td>
<td><asp:Button ID="Button5" text="XXX" value ="XXX" style="font-size:8px;height:30px;width:60px" runat="server" AutoPostBack="true" OnClick="ChangeRedirect_Click" /> </td>
<tr />
OnClick 函数根据按钮的值重定向到另一个分页。
* 根据 Jim W 的回答进行编辑 *
1)
C#:
public string Btn1
if (!Page.IsPostBack)
{
Btn1 = (dt.Rows[0][0]).ToString();
}
HTML:
<td><asp:Button ID="Button1" Text="<%# Btn1 %>" Value ="<%# Btn1 %>"
style="font-size:8px;height:30px;width:60px" runat="server"
AutoPostBack="true" OnClick="ChangeRedirect_Click" /> </td>
Output:
Blank Button
2)
C#:
if (!Page.IsPostBack)
{
Button1.Text = (dt.Rows[0][0]).ToString();
}
HTML:
<td><asp:Button ID="Button1" Text="<%# Button1 %>" Value ="<%# Button1 %>"
style="font-size:8px;height:30px;width:60px" runat="server"
AutoPostBack="true" OnClick="ChangeRedirect_Click" /> </td>
Output:
Button text is "System.Web.UI.WebControls.Button"
3)
C#:
public string Btn1
if (!Page.IsPostBack)
{
Btn1 = System.Convert.ToString(dt.Rows[0][0]);
}
HTML:
<td><asp:Button ID="Button1" Text="<%# Btn1 %>" Value ="<%# Btn1 %>"
style="font-size:8px;height:30px;width:60px" runat="server"
AutoPostBack="true" OnClick="ChangeRedirect_Click" /> </td>
Output:
Blank Button
4)
C#:
public string Btn1
if (!Page.IsPostBack)
{
Btn1 = (dt.Rows[0][0]).ToString();
}
HTML:
<td><asp:Button ID="Button1" Text="<%# Btn1 %>" Value ="<%# Btn1 %>"
style="font-size:8px;height:30px;width:60px" runat="server"
AutoPostBack="true" OnClick="ChangeRedirect_Click" /> </td>
Output:
Blank Button
最佳答案
您可以使用数据绑定(bind)来完成,请参阅 https://support.microsoft.com/en-us/help/307860/asp-net-data-binding-overview
例如
<td><asp:Button ID="Button1" Text="<%# Btn1 %>" Value ="XXX" style="font-size:8px;height:30px;width:60px" runat="server" AutoPostBack="true" OnClick="ChangeRedirect_Click" /> </td>
然后在您发布的变量生成代码(或之后)的末尾调用 Page.DataBind()
。
更新:完整示例
ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="NS.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" Text="<%# Btn1 %>" runat="server"/>
</div>
</form>
</body>
</html>
代码隐藏
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace NS
{
public partial class WebForm1 : System.Web.UI.Page
{
protected string Btn1;
protected void Page_Load(object sender, EventArgs e)
{
Btn1 = "hello";
Page.DataBind();
}
}
}
关于javascript - 将 C# 变量传递给 HTML 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53057366/