【发布时间】:2019-04-03 02:02:54
【问题描述】:
我正在尝试通过将 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
【问题讨论】:
-
至少按钮 'Click' 处理程序 PostBack 会将发起请求的按钮的值公开为 'CommandName':因此请填写一个合理的值(通过 CommandName 属性)。跨度>
-
查看我的更新答案,您可能只需要在标记中使用
Text=而不是text= -
了解前端总是一个好主意,现在您已经完成了后端。接下来是使用 JS、JQuery 或 Angular 编写脚本,这将处理您的所有后端数据。
标签: javascript c# html asp.net button