Rea*_*eel 33 .net c# asp.net runtime
其实,我创建1 TextBox
上Pageload
,并补充说TextBox
来Panel
.现在,我有一个LinkButton
喜欢Add Another
.
我正在输入文本,TextBox
如果需要,我需要TextBox
通过单击创建新建Add Another LinkButton
.
实际上,我能够得到计数并重新创建TextBoxes
.但是,问题在于,先前生成的我输入的文本Textboxes
是丢失的.
任何人,建议我这个解决方案?
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!IsPostBack)
{
for (int i = 0; i < 5; i++)
{
TableRow row = new TableRow();
for (int j = 0; j < 5; j++)
{
TableCell cell = new TableCell();
TextBox tb = new TextBox();
tb.ID = "TextBoxRow_" + i + "Col_" + j;
cell.Controls.Add(tb);
row.Cells.Add(cell);
}
Table1.Rows.Add(row);
}
}
}
catch (Exception ex)
{
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个示例代码,同样的代码写在Button_Click
另外
protected void ASPxButton1_Click(object sender, EventArgs e)
{
int k = Table1.Controls.Count;
}
Run Code Online (Sandbox Code Playgroud)
我得到一个Count=0
上Button_Click
.
Viv*_*vek 17
您需要做的就是在回发期间每次都在页面加载事件之前或之内重新实例化/重新初始化动态控件,并将此控件添加到页面/表单/占位符.然后,通过父控件调用LoadPostData方法,将自动将发布的数据分配给控件.
查看文章以及如何编写动态控件代码 - 如何在asp.net中回发期间维护动态控件事件和数据
R.C*_*R.C 14
使用动态控件时,必须记住它们只存在于下一个回发之前.ASP.NET不会重新创建动态添加的控件.如果需要多次重新创建控件,则应在PageLoad事件处理程序中执行控件创建(目前您只是第一次使用Condition:!IsPostabck创建TextBox).这样做的另一个好处是允许您在动态控件中使用视图状态.即使视图状态通常在Page.Load事件之前恢复,如果在PageLoad事件的处理程序中创建控件,ASP.NET将在PageLoad事件处理程序结束后应用它具有的任何视图状态信息.
所以,删除条件:!IsPostback,这样每次页面加载时,TextBox控件也会被创建.在PageLoad处理程序完成后,您还将看到保存文本状态框.[显然你没有禁用ViewState !!! ]
例:
protected void Page_Load(object sender, EventArgs e)
{
TextBox txtBox = new TextBox();
// Assign some text and an ID so you can retrieve it later.
txtBox.ID = "newButton";
PlaceHolder1.Controls.Add(txtBox);
}
Run Code Online (Sandbox Code Playgroud)
现在运行它之后,在文本框中键入任何内容,看看当您单击任何导致回发的按钮时会发生什么.文本框仍然保持其状态!
归档时间: |
|
查看次数: |
84758 次 |
最近记录: |