دریافت مقادیر در asp.net از textbox هایی که به صورت داینامیک ایجاد شده اند
پنجشنبه 9 بهمن 1393در این مقاله میخواهیم در textbox ،asp.net هایی به صورت داینامیک بسازیم و مقادیری را که کاربر وارد میکند را بدست آوریم
به صفحه خود یک panel و دو button اضافه کنید یکی برای اضافه کردن textbox و دیگری برای بدست آوردن مقادیر:
<asp:Panel ID="pnlTextBoxes" runat="server"> </asp:Panel> <hr /> <asp:Button ID="btnAdd" runat="server" Text="Add New" OnClick="AddTextBox" /> <asp:Button ID="btnGet" runat="server" Text="Get Values" OnClick="GetTextBoxValues" />
زمانی که روی دکمه add کلیک میکنیم ابتدا به تعداد textbox های نمایش داده شده در پنل اضافه میشود سپس textbox جدید ساخته میشوددر صفحه aspx.cs خود کد زیر را وارد کنید:
protected void AddTextBox(object sender, EventArgs e) { int index = pnlTextBoxes.Controls.OfType<TextBox>().ToList().Count + 1; this.CreateTextBox("txtDynamic" + index); } private void CreateTextBox(string id) { TextBox txt = new TextBox(); txt.ID = id; pnlTextBoxes.Controls.Add(txt); Literal lt = new Literal(); lt.Text = "<br />"; pnlTextBoxes.Controls.Add(lt); }
به منظور حفظ textboxها در Postback ها ماباید از رویداد PreInit صفحه استفاده کنیم:
protected void Page_PreInit(object sender, EventArgs e) { List<string> keys = Request.Form.AllKeys.Where(key => key.Contains("txtDynamic")).ToList(); int i = 1; foreach (string key in keys) { this.CreateTextBox("txtDynamic" + i); i++; } }
زمانی که روی دکمه get کلیک میکنیم یک حلقه روی textbox های اضافه شده به پنل میزنیم کد دراین حلقه id ها و مقادیر textbox ها واکشی میشود و از طریق jquery و alert نمایش داده میشود:
protected void GetTextBoxValues(object sender, EventArgs e) { string message = ""; foreach (TextBox textBox in pnlTextBoxes.Controls.OfType<TextBox>()) { message += textBox.ID + ": " + textBox.Text + "\\n"; } ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", "alert('" + message + "');", true); }
حالا میتونید برنامه رو اجرا کنید:
- ASP.net
- 2k بازدید
- 6 تشکر