动态将TextBoxes插入Repeater并检索其值
||
我有一个从SQL绑定的Repeater,它包含可编辑元素和只读元素的混合物。当您单击行上的“编辑”按钮时,可编辑部分应转换为文本框,而当您单击“更新”时,应保存所做的更改。
这是“编辑”和“更新”按钮的OnClick代码(非常简化的版本):
switch(commandName)
{
case \"Edit\":
Label1.Visible = false; //hide read-only version
PlaceHolder1.Visible = true; //show editing version
//Dict1 is Dictionary<string, string> in this example.
foreach (var key in Dict1)
{
//insert a TextBox dynamically into the PlaceHolder
PlaceHolder1.Controls.Add(new TextBox
{
ID = \"txt\" + key,
Text = Dict1[key]
});
}
break;
case \"Update\":
//retrieve user input from dynamically-added TextBoxes
foreach (var TextBox1 in PlaceHolder1.Controls.Where(c => c.ID.StartsWith(\"txt\")))
{
doStuff(TextBox1);
}
Label1.Visible = true; //show read-only version
PlaceHolder1.Visible = false; //hide editing version
break;
}
问题是当页面回发时,我的动态添加的文本框不存在。我已经在调试器中检查了“ 1”,并且其中没有TextBoxes。 PlaceHolder1
本身在Repeater内,但是我没有在PostBack上重新绑定Repeater。
我已经考虑过使用原始HTML代替TextBox控件,并将值从Request.Form中拉出来,但是这对我来说有点强。如何使动态添加的TextBox跨回发持久化?
编辑:
这里有一些复杂之处,如果没有大量示例代码就很难显示出来。这里是大的:
中继器中的每个单元格可以包含只读文本和可编辑文本(即,动态插入的Labels和TextBoxes)的混合物
我不知道每个单元格中将有多少个可编辑区域。原始文本可能看起来像blah blah @A1@ blah blah @A2@ blah...
,我将不得不插入替换文本来代替@ A1 @,@ A2 @等。在编辑模式下,仅该替换文本是可编辑的。
没有找到相关结果
已邀请:
2 个回复
谦响局豢报
募磷