Sto provando ad aggiungere controlli sulla pagina C# di asp.net, quando l'utente fa clic su aggiungi un altro. Sto usando la tabella e voglio aggiungere i controlli in quella tabella. Fammi sapere anche come ottenere i valori dei controlli nel codice una volta che il modulo è stato inviato al server.Aggiunge dinamicamente i comandi javascript Asp.net C#
6
A
risposta
8
Ecco un esempio di jQuery, spero che sia d'aiuto!
ASPX:
<head id="Head1" runat="server">
<title>Controls</title>
<script src="Scripts/jquery-1.7.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#btnAdd").click(function() {
var field = $("#field").val();
var input = "<input name='parameters' id='field' type='text' />";
var newRow = "<tr><td>" + field + "</td><td>" + input + "</td></tr>";
$('#controls').append(newRow);
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="field" type="text" />
<input id="btnAdd" type="button" value="Add" />
<table id="controls" cellpadding="10" cellspacing="10">
</table>
<asp:Button ID="btnProcess" runat="server" Text="Process" OnClick="Process" />
</div>
</form>
</body>
codice dietro
protected void Process(object sender, EventArgs e)
{
var parameters = Request.Form["parameters"];
if (parameters != null && parameters.Count() > 0)
{
//Now you have access to the textbox values,perform any additional processing
parameters.Split(',').ToList().
ForEach(p =>
{
Response.Write(p + "<br />");
});
}
}
Ed ecco un altro se si vuole fare tutto sul server.Problem con questo approccio è che quando si aggiungono i controlli in modo dinamico scompaiono al postback e devi continuare a ricrearli nel Page_Load
che aggiungerà un'elaborazione sostanziale al tuo server, suggerirei di attaccare con l'opzione jQuery
ASPX:
<asp:TextBox ID="txtFieldName" runat="server"></asp:TextBox>
<asp:Button ID="btnAddControl" runat="server" Text="Add" OnClick="Add" />
<asp:Table EnableViewState="true" CellPadding="2" CellSpacing="2" BorderWidth="2" BorderStyle="Solid" GridLines="Both" ID="table"
runat="server">
<asp:TableHeaderRow>
<asp:TableHeaderCell Text="Field" />
<asp:TableHeaderCell Text="Value" />
</asp:TableHeaderRow>
</asp:Table>
<asp:Button ID="btnPost" runat="server" Text="Post" OnClick="Post" />
codice dietro:
public List<string> rows = new List<string>();
protected void Page_Load(object sender, EventArgs e)
{
if (ViewState["Rows"] != null)
{
rows = (List<string>)ViewState["Rows"];
if (rows.Count > 0)
{
foreach (var row in rows)
{
TextBox textbox = new TextBox();
textbox.Width = 300;
table.Rows.Add(GetRow(row,textbox));
}
}
}
}
protected void Add(object sender, EventArgs e)
{
string row = txtFieldName.Text;
if (!String.IsNullOrEmpty(row))
{
rows.Add(txtFieldName.Text);
TextBox textbox = new TextBox();
textbox.Width = 300;
table.Rows.Add(GetRow(row, textbox));
ViewState["Rows"] = rows;
}
}
private TableRow GetRow(string text, WebControl txtName)
{
TableRow tr = new TableRow();
TableCell cell1 = new TableCell();
cell1.Text = text;
TableCell cell2 = new TableCell();
cell2.Controls.Add(txtName);
tr.Cells.Add(cell1);
tr.Cells.Add(cell2);
return tr;
}
protected void Post(object sender, EventArgs e)
{
if (table.Rows.Count > 0)
{
System.Diagnostics.Debugger.Break();
//i=1 because we want to skip the header row
for (int i = 1; i < table.Rows.Count; i++)
{
//Examine the values and do further processing...
string field = table.Rows[i].Cells[0].Text;
string value = ((TextBox)table.Rows[i].Cells[1].Controls[0]).Text;
}
}
}
1
Se si aggiungono controlli lato client dinamici, saranno inclusi nell'oggetto Request.Form come valori. Si può iterare sul contenuto di questa raccolta. Si prega di notare che la tabella dovrebbe essere contenuta all'interno di un elemento del modulo altrimenti non verranno pubblicati.
Problemi correlati
- 1. asp.net aggiunge dinamicamente GridViewRow
- 2. Aggiunge dinamicamente proprietà C# a Runtime
- 3. ckeditor aggiunge dinamicamente uiElement
- 4. ASP.NET 2.0 aggiunge stili dinamicamente alla pagina in un controllo
- 5. Javascript, CSS dinamicamente generato in ASP.NET MVC
- 6. Aggiunge dinamicamente i pulsanti in Ionic a Nav-bar
- 7. Aggiunge dinamicamente le descrizioni comandi alle righe della griglia di kendo di una colonna
- 8. Applicare i CSS dinamicamente con JavaScript
- 9. Python aggiunge dinamicamente a una funzione
- 10. Come aggiungere dinamicamente i controlli al modulo ASP.NET?
- 11. Cython non riconosce i comandi C++ 11
- 12. ASP.NET MVC Aggiungi record figlio dinamicamente
- 13. Aggiunge dinamicamente tag script con src che può includere document.write
- 14. ASP.NET MVC aggiunge la convalida per i campi non obbligatori
- 15. Aggiunge dinamicamente sottotrame in matplotlib con più di una colonna
- 16. Accesso al valore di controlli creati dinamicamente C# asp.net
- 17. ASP.NET ha creato dinamicamente controlli e postback
- 18. Crea dinamicamente collegamento Javascript
- 19. Imposta dinamicamente opzioni di selezione con JavaScript
- 20. Debug di file javascript aggiunti dinamicamente
- 21. Aggiunta di PostBackTriggers e AsyncPostBackTriggers a UpdatePanel per i comandi di grandchild generati dinamicamente
- 22. asp.net HiddenField: aggiungi dinamicamente l'attributo personalizzato
- 23. Aggiunta <br/> dinamicamente tra i controlli asp.net
- 24. Modifica ASP.NET MVC Percorsi dinamicamente
- 25. Javascript: problema quando si aggiunge dinamicamente una riga dalla sua HTML a un tavolo in IE
- 26. Resize prompt dei comandi tramite i comandi
- 27. VB/C# .net Aggiunge dinamicamente elementi di controllo con Background Worker
- 28. Aggiunge dinamicamente legende a grafici matplotlib in python
- 29. C++ Esecuzione comandi CMD
- 30. Aggiunge/rimuove dinamicamente le rotte ad un router actor
è possibile aggiungere tramite server, una volta ho fatto al lato client. ma qui voglio farlo su serveride, così come posso ottenere tutti i valori in codebehind –
Solo come parte di un repost, che è goffo da una prospettiva UI IMHO. Usando Request.Form * puoi * ottenere i valori nel codebehind. –
È possibile utilizzare i pannelli di aggiornamento, ma sono effettivamente ripubblicati e causano molti sprechi sul lato server. –