2017-06-13 64 views
1

我想加載一個帶有文本框和旁邊的按鈕以及文本框中的任何數值的aspx頁面。在單擊文本框旁邊的按鈕時,我想生成另一組文本框,其中包含一個非重複的隨機數字和旁邊的一個按鈕,如果我們單擊上次生成的按鈕,應該再次繼續。無法在asp.net中正確使用C#中的動態生成的文本框

在我的代碼中,我得到的輸出,但在我的輸出頁面被加載,第一次它顯示一個文本框包含'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> 

回答

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之前執行。

相關問題