C# - Array o List di Oggetti

di Anonimizzato7034 il
3 risposte
Salve,
dovrei creare un form ed una pagina Aspx con un numero variabili di textbox e di label.
Ovvero, l'utente se seleziona un prodotto A la pagina ed il form dovranno avere 7 textbox invece selezionando un prodotto B dovranno esser generate 18 tb.
Metterle tutte a mano è controproducente!!!

Ho cercato su internet ma non ho trovato soluzione a questo quesito..chi può aiutarmi?

Vi ringrazio anticipatamente!!

3 Risposte

  • Ciao joeykiske
    Potresti usare la generazione del codice html via codice, ad esempio:

    file .aspx
    
    <body>
        <form id="form1" runat="server">
            <div>
                <%= WriteTextBoxList()%>
            </div>
            <asp:TextBox ID="TextBoxA" runat="server"></asp:TextBox>
        </form>
    </body>
    
    file .aspx.cs
    
    public partial class Test1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    
        protected string WriteTextBoxList()
        {
            int textBoxCount = 5;  // imposti questo valore leggendo qualche condizione
    
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < textBoxCount; ++i)
            {
                sb.AppendLine("<input type='text' name='box_" + i + "' + class='myBox'><br/>");
            }
    
            return sb.ToString();
        }
    }
    
    Questo ti genera una pagina con 5 campi di input.

    P.S. Ho qualche dubbio di aver capito bene il problema, in quanto la mia risposta non ha nulla a che fare con gli Array o le Liste che specifichi nel subject.
  • Grazie del consiglio!
    In questo modo posso mettere tutto all'interno di un pannello e con un foreach modifico i metodi che mi occorrono.
    Per quanto riguarda l'allineamento all'interno della pagina è possibile modificare i parametri x,y,z ?

    In un windows form è possibile generare txtbox in automatico?
    Penso che occorra anche la disposizione all'interno del form...

    Grazie ancora per la risposta!
  • Ciao joeykiske

    Per il posizionamento puoi ricorrere ai css, riscrivo il file .aspx per mettere una classe al div (e togliere una riga che non serviva)

    file .aspx
    
    <body>
        <form id="form1" runat="server">
            <div class="BoxList">
                <%= WriteTextBoxList()%>
            </div>
        </form>
    </body>
    
    a questo punto puoi scrivere un .css
    
    .BoxList
    {
      border:1px solid green;
      height:300px;
      margin:10px auto 10px auto;
      position: relative;
      width:500px;
    }
    
    .myBox
    {
       width:100px;
       margin-left:10px;
    }
    
    in questo esempio gli input sono dentro al pannello, uno sotto l' altro a 10px del bordo sinistro.

    Oppure nel codice puoi impostare delle posizioni assolute per ognuno:
    
    protected string WriteTextBoxList()
    {
        int textBoxCount = 5;  // imposti questo valore leggendo qualche condizione
    
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < textBoxCount; ++i)
        {
            sb.AppendLine("<input type='text' name='Box_" + i +
                "' + class='myBox' style='left:" + i * 10 +
                "px; top:" + i * 30 + "px; '>");
        }
    
        return sb.ToString();
    }
    
    Non è molto leggibile ma funziona, (nel css aggiungi l' absolute):
    
    .BoxList
    {
      border:1px solid green;
      height:300px;
      margin:10px auto 10px auto;
      position: relative;
      width:500px;
    }
    
    .myBox
    {
       width:100px;
       position:asbolute;
    }
    
    In questo esempio gli input sono disposti in diagonale.
Devi accedere o registrarti per scrivere nel forum
3 risposte