重金求解
问题:Page页面上有二个Button,一个Panel。其中Button1点击的时候,自动在Panel里添加5个文本框。在生成的5个文本框中输入数值后。 点击另外一个Button时候,弹出刚才输入文本框的值。
[解决办法]
protected void btn1_Click(object sender, EventArgs e)
{
for(int i=0;i<5;i++)
{
TextBox txt = new TextBox();
txt.ID = "txt_" + i.ToString();
Panel1.Controls.Add(txt);
}
}
protected void btn2_Click(object sender, EventArgs e)
{
for(int i=0;i<5;i++)
{
TextBox txt=Panel1.FindControl("txt_" + i.ToString()) as TextBox;
if(txt!=null)
{}
}
}
[解决办法]
ClientScript.RegisterStartupScript(this.GetType(), "", "<script language='javascript' defer>alert('" +txt.Text + "');</script>");
[解决办法]
厉害加速度
不愧为答题机器人 呵呵
[解决办法]
因为动态生成的textbox在重新点击按钮后会消失,所以在页面上放置HiddenField1来保存textbox的值
- HTML code
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> <asp:Panel ID="Panel1" runat="server" Height="50px" Width="125px"> </asp:Panel> <asp:HiddenField ID="HiddenField1" runat="server" /> <asp:Button ID="Button2" runat="server" Text="Button" OnClick="Button2_Click" OnClientClick="saveValue();" /><script>function saveValue(){ var obj=document.getElementById("Panel1").getElementsByTagName("input"); for(var i=0;i<obj.length;i++) { if(obj.type="text") document.getElementById("HiddenField1").value+=obj[i].value+","; } alert(document.getElementById("HiddenField1").value)}</script>
[解决办法]
我们只能跟随问答机器人后面接点分
SF都让他一个人占领了 速度太快
[解决办法]
我也来凑个热闹,企图获得重金!!
生成一个TextBox,多个依次类推,放一个Hidden1,中间变量
页面html
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
<asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Button" OnClientClick="test()" />
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>
<input id="Hidden1" type="hidden" runat="server" />
js:
<script type="text/javascript">
function test() {
document.getElementById("Hidden1").value = document.getElementById("myT1").value;
}
</script>
c#
protected void Button1_Click(object sender, EventArgs e)
{
this.sText();//动态生成TextBox
}
protected void Button2_Click(object sender, EventArgs e)
{
ViewState["t1"] = Hidden1.Value.ToString();//获得中间变量
this.sText();//动态生成TextBox
((TextBox)Panel1.FindControl("myT1")).Text = ViewState["t1"].ToString();//赋值
}
private void sText()
{
TextBox myT1 = new TextBox();
myT1.ID = "myT1";
Panel1.Controls.Add(myT1);
}
[解决办法]
[解决办法]
引用:
protected void btn1_Click(object sender, EventArgs e)
{
for(int i=0;i <5;i++)
{
TextBox txt = new TextBox();
txt.ID = "txt_" + i.ToString();
Panel1.Controls.Add(txt);
}
}
protected void btn2_Click(object sender, EventArgs e)
{
for(int i=0;i <5;i++)
{
TextBox txt=Panel1.FindControl("txt_" + i.ToString()) as TextBox;
if(txt!=null)
{}
}
}
修改:
for(int i=0;i <5;i++)
{
TextBox txt=Panel1.FindControl("txt_" + i.ToString()) as TextBox;
if(txt!=null)
{
txt.Text=HiddenField1.Value();//这里是五个隐藏组件,我代表性的写了一个。
}
}
[解决办法]
4楼应该是对的,因为控件不是在page_load里产生的,所以要注意一个回传的问题.
[解决办法]
<asp:Panel ID="pnlTest" runat="server">
<input type="button" id="btnShowButtons" value="显示按钮" onclick="btnShowButtons_Click()" />
<asp:Button ID="btnShowValues" runat="server" Text="显示文本框值" />
<div id="ContainerForTXT" style="display:none">
<asp:TextBox ID="txt1" runat="server" /><br />
<asp:TextBox ID="txt2" runat="server" /><br />
<asp:TextBox ID="txt3" runat="server" /><br />
<asp:TextBox ID="txt4" runat="server" /><br />
<asp:TextBox ID="txt5" runat="server" />
</div>
</asp:Panel>
<script>
function btnShowButtons_Click()
{
document.getElementById("ContainerForTXT").style.display="block"
}
</script>
5个文本框不是动态的增加的,那最好控制<div>是否隐藏,至于取值弹出显示不难了吧?