我想加载一个aspx页面,旁边有一个文本框和一个按钮,文本框中有任何数值。单击文本框旁边的按钮时,我想生成另一组文本框,其中包含非重复随机数和旁边的按钮,如果单击最后生成的按钮,则应该再次继续。
在我的代码中我得到输出但是,在我的输出中页面被加载,并且它第一次显示包含'0'和按钮的文本框但是当我点击生成按钮时它生成文本框和按钮,但它们被放置在包含'0'的第一个文本框上方,所有新生成的包含随机数字和按钮的文本框的其余部分放在第一个文本框上。我希望第一个文本框位于顶部,其余部分生成在它下面。
我是C#,asp.net的新手。请帮助!!!
以下是我的代码:
<!DOCTYPE html>
<script runat="server">
static int limit = 0;
static int[] x = new int[100];
protected void Page_Load(object sender, EventArgs e)
{
if(Page.IsPostBack)
x[limit] = new Random().Next(100);
}
protected void bGenerate_Click(object sender, EventArgs e)
{
limit++;
}
protected void tbNum_TextChanged(object sender, EventArgs e)
{
//tbNum.Text ="";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Creates Controls Dynamically</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table style="width:100%;">
<%
for (int counter = 0; counter <= limit; counter++)
{
%>
<tr>
<td>
<input type="text" name="tbNum" id="tbNum" value="<%=x[counter]%>"/>
<%--<asp:TextBox ID="tbNum" runat="server" Width="382px" OnTextChanged="tbNum_TextChanged"></asp:TextBox>--%>
</td>
<td>
<asp:Button ID="bGenerate" runat="server" Text="GENERATE" Width="290px" OnClick="bGenerate_Click" />
</td>
</tr>
<%
}
%>
</table>
</div>
</form>
</body>
答案 0 :(得分:1)
您应该将生成新随机值的代码移动到bGenerate_Click
事件:
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
x[0] = new Random().Next(100);
}
protected void bGenerate_Click(object sender, EventArgs e)
{
limit++;
x[limit] = new Random().Next(100);
}
现有代码存在的问题是,当您点击“生成”按钮时,Page_Load
中的代码会在bGenerate_Click
之前执行。