我想asp.net C#頁面上添加控件控件,當用戶點擊添加另一個。我正在使用表格,並希望在該表格中附加控件。另外讓我知道,一旦表單提交給服務器,我將如何在代碼中獲取控件值。動態添加JavaScript的Asp.net C#
6
A
回答
8
這裏有一個jQuery的例子,希望它有幫助!
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>
背後
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 />");
});
}
}
這裏的代碼是另一個,如果你想要做這種方法的server.Problem一切,當你動態添加控件他們消失後回來,你必須不斷重新創建它們在Page_Load
這將增加大量的處理到您的服務器,我會建議堅持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" />
後面的代碼:
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
如果您要添加動態客戶端控件,它們將在的Request.Form對象的值。你可以遍歷這個集合的內容。請注意,該表必須包含在表單元素中,否則它們不會被髮布。
相關問題
- 1. 動態添加行到GridView在ASP.NET(C#)
- 2. 動態添加圖像到asp.net c#gridview
- 3. 添加類別動態ASP.Net 4 MVC3 C#
- 4. 添加動態的Javascript
- 5. ASP.NET 2.0動態添加OnSelectedIndexChanged
- 6. 動態添加HTML到ASP.NET
- 7. asp.net動態添加GridViewRow
- 8. 動態添加ASP.Net控件
- 9. JavaScript動態添加列添加行
- 10. Javascript:添加動態方法
- 11. 動態添加JavaScript代碼
- 12. phonegap - 動態添加javascript
- 13. Javascript動態添加HTML
- 14. ASP.Net本地化爲那些動態添加的javascript
- 15. 動態添加面板c#
- 16. 動態添加RegularExpressionValidator C#
- 17. 動態添加ASP.NET MVC中的ViewUserControl
- 18. 動態添加jQuery的&& Asp.net應用
- 19. ASP.NET如何將javascript添加到動態gridview文本框(ItemTemplate)
- 20. ASP.NET動態添加一個GridView
- 21. 如何在C#中的ASP.NET動態頁面添加動態字段#
- 22. 如何爲動態添加的按鈕創建方法。 asp.net C#
- 23. 將Ajax CalendarExtender添加到ASP.NET C#中的動態文本框中#
- 24. 動態Javascript在asp.net
- 25. 通過javascript動態添加asp.net服務器端控件
- 26. 如何使用javascript在asp.net webform上動態添加文本框
- 27. 的Javascript添加動態HTML元素
- 28. 調試動態添加的JavaScript文件
- 29. 的Javascript:添加字段動態
- 30. 的JavaScript動態添加元素
是有可能通過添加服務器,我曾經做過的客戶端。但在這裏我想在服務器端做,所以我可以得到代碼隱藏的所有值 –
僅作爲轉發的一部分,這是從用戶界面透視恕我直言笨重。通過使用Request.Form,您可以*獲取代碼隱藏中的值。 –
你可以使用更新面板,但他們實際上是一個dolvel-up轉發,並導致大量的浪費服務器端。 –