[英]Get string from textbox in C# asp.net
從使用鏈接按鈕添加的某些文本框中獲取字符串時,我遇到一些問題。 這段代碼可以通過單擊linkbutton來添加文本框,並且這些文本框被添加到面板上,但是我不知道如何在添加的這些文本框中獲取用戶編寫的字符串,而且我也無法保留該字符串。當我單擊鏈接按鈕以添加另一個文本框時,它們被寫在文本框中。 你能幫我嗎? 這是我的代碼:
public partial class _Default : Page
{
Label myLabel1;
Label myLabel2;
protected void Page_Load(object sender, EventArgs e)
{
myLabel1 = new Label();
myLabel2 = new Label();
Panel1.Controls.Add(myLabel1);
Panel2.Controls.Add(myLabel2);
if (!Page.IsPostBack)
{
//Remove the session when first time page loads.
Session.Remove("clicks");
Session.Remove("clicks2");
}
}
private void BuildTextBoxes(int rowCount1, int rowCount2)
{
for (int i = 0; i < rowCount1; i++)
{
TextBox TxtBoxU = new TextBox();
TxtBoxU.ID = "TextBoxU" + i.ToString();
//Add the labels and textboxes to the Panel.
Panel1.Controls.Add(TxtBoxU);
}
myLabel1.Text = rowCount1 + "";
for (int i = 0; i < rowCount2; i++)
{
TextBox TxtBoxU = new TextBox();
TxtBoxU.ID = "TextBoxU" + i.ToString();
//Add the labels and textboxes to the Panel.
Panel2.Controls.Add(TxtBoxU);
}
myLabel2.Text = rowCount2 + "";
}
protected void LinkButton1_Click(object sender, EventArgs e)
{
int rowCount1 = 0;
//initialize a session.
rowCount1 = Convert.ToInt32(Session["clicks"]);
rowCount1++;
//In each button clic save the numbers into the session.
Session["clicks"] = rowCount1;
BuildTextBoxes(rowCount1, Convert.ToInt32(Session["clicks2"]));
}
protected void LinkButton2_Click(object sender, EventArgs e)
{
int rowCount2 = 0;
//initialize a session.
rowCount2 = Convert.ToInt32(Session["clicks2"]);
rowCount2++;
//In each button clic save the numbers into the session.
Session["clicks2"] = rowCount2;
BuildTextBoxes(Convert.ToInt32(Session["clicks"]), rowCount2);
}
}
非常感謝。
要閱讀文本框,您需要在回發時執行以下操作:
var result = Request.Form["textboxId"]
您需要做幾件事。 由於您是動態生成這些文本框的,因此您需要在每次頁面處理(甚至是回發)時都生成它們。 還需要在加載viewstate之前生成它們。
每次加載頁面時,您都需要在面板中重新創建文本框,這應該在page_init函數中發生(需要在加載viewstate之前發生)。
有關ASP.Net頁面生命周期的更多信息: ASP.NET頁面生命周期概述
以下代碼是我認為您正在尋找的代碼:
Label myLabel1;
Label myLabel2;
/// <summary>
/// Add the dynamic controls to the page before the viewstate is
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void page_init(object sender, EventArgs e)
{
myLabel1 = new Label();
myLabel2 = new Label();
Panel1.Controls.Add(myLabel1);
Panel2.Controls.Add(myLabel2);
var box1Count = 0;
box1Count = Convert.ToInt32(Session["clicks"]);
var box2Count = 0;
box2Count = Convert.ToInt32(Session["clicks2"]);
BuildTextBoxes(box1Count, box2Count);
}
/// <summary>
/// Ensure first time loads properly setup the page.
/// </summary>
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//Remove the session when first time page loads.
Session.Remove("clicks");
Session.Remove("clicks2");
//Set the Text Boxes and lables to zero.
BuildTextBoxes(0, 0);
}
}
/// <summary>
/// Add any new text boxes to the screen.
/// </summary>
/// <param name="rowCount1">The total number of text boxes in the first group.</param>
/// <param name="rowCount2">The total number of text boxes in the second group.</param>
private void BuildTextBoxes(int rowCount1, int rowCount2)
{
var panel1Count = Panel1.Controls.Count; //Current number of text boxes
panel1Count--; //Remove the Label control from the count
for (int i = panel1Count; i < rowCount1; i++)
{
TextBox TxtBoxU = new TextBox();
TxtBoxU.ID = "TextBox1U" + i.ToString(); //Ensure a globally unique name.
Panel1.Controls.Add(TxtBoxU); //Add the labels and textboxes to the Panel.
}
myLabel1.Text = rowCount1.ToString();
var panel2Count = Panel2.Controls.Count; //Current number of text boxes
panel2Count--; //Remove the Label control from the count
for (int i = panel2Count; i < rowCount2; i++)
{
TextBox TxtBoxU = new TextBox();
TxtBoxU.ID = "TextBox2U" + i.ToString(); //Ensure a globally unique name;
Panel2.Controls.Add(TxtBoxU); //Add the labels and textboxes to the Panel.
}
myLabel2.Text = rowCount2 + "";
}
/// <summary>
/// Add another textbox to the first group.
/// </summary>
protected void LinkButton1_Click(object sender, EventArgs e)
{
int rowCount1 = 0;
//initialize a session.
rowCount1 = Convert.ToInt32(Session["clicks"]);
rowCount1++;
//In each button click save the numbers into the session.
Session["clicks"] = rowCount1;
BuildTextBoxes(rowCount1, Convert.ToInt32(Session["clicks2"]));
}
/// <summary>
/// Add another textbox to the second group.
/// </summary>
protected void LinkButton2_Click(object sender, EventArgs e)
{
int rowCount2 = 0;
//initialize a session.
rowCount2 = Convert.ToInt32(Session["clicks2"]);
rowCount2++;
//In each button clic save the numbers into the session.
Session["clicks2"] = rowCount2;
BuildTextBoxes(Convert.ToInt32(Session["clicks"]), rowCount2);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.