现在有一个panel,panel外面有个button,当我点击button的时候在panel里面加1个textbox,2个button.而且无刷新(用了ajax).
但是出了一个问题,当我点第2次以后 添加的时候panel里面始终只显示3个控件(1个textbox,2个button)求教如何解决.
代码如下:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="lblMessage" runat="server" ForeColor="Red" Text="lblMessage"
Visible="False"></asp:Label>
<asp:RadioButtonList ID="rblNums" runat="server" RepeatDirection="Horizontal"
Visible="False" RepeatColumns="5">
</asp:RadioButtonList>
<asp:Button ID="btnAdd" runat="server" Text="添加一帧" onclick="btnAdd_Click" />
<asp:Button ID="btnDelete" runat="server" Text="删除最后一帧" onclick="btnDelete_Click" />
<asp:Panel ID="panelContent" runat="server"></asp:Panel> </ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnAdd" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="btnDelete" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="btnSave" EventName="Click" /> </Triggers>
</asp:UpdatePanel>
<asp:Button ID="btnSave" runat="server" Text="保存" onclick="btnSave_Click" />
后台代码: System.Web.UI.WebControls.TextBox txtShowContent = new TextBox(); txtShowContent.Width = 150;
txtShowContent.Height = 200;
txtShowContent.TextMode = TextBoxMode.MultiLine; NewButton newbtnModify = new NewButton(); newbtnModify.Text = "修改";
newbtnModify.DeleteOrModifyAddress = address; NewButton newbtnDelete = new NewButton(); newbtnDelete.Text = "删除";
newbtnDelete.DeleteOrModifyAddress = address;
this.panelContent.Controls.Add(txtShowContent);
this.panelContent.Controls.Add(newbtnModify);
this.panelContent.Controls.Add(newbtnDelete);
this.panelContent.Visible = true;
但是出了一个问题,当我点第2次以后 添加的时候panel里面始终只显示3个控件(1个textbox,2个button)求教如何解决.
代码如下:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="lblMessage" runat="server" ForeColor="Red" Text="lblMessage"
Visible="False"></asp:Label>
<asp:RadioButtonList ID="rblNums" runat="server" RepeatDirection="Horizontal"
Visible="False" RepeatColumns="5">
</asp:RadioButtonList>
<asp:Button ID="btnAdd" runat="server" Text="添加一帧" onclick="btnAdd_Click" />
<asp:Button ID="btnDelete" runat="server" Text="删除最后一帧" onclick="btnDelete_Click" />
<asp:Panel ID="panelContent" runat="server"></asp:Panel> </ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnAdd" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="btnDelete" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="btnSave" EventName="Click" /> </Triggers>
</asp:UpdatePanel>
<asp:Button ID="btnSave" runat="server" Text="保存" onclick="btnSave_Click" />
后台代码: System.Web.UI.WebControls.TextBox txtShowContent = new TextBox(); txtShowContent.Width = 150;
txtShowContent.Height = 200;
txtShowContent.TextMode = TextBoxMode.MultiLine; NewButton newbtnModify = new NewButton(); newbtnModify.Text = "修改";
newbtnModify.DeleteOrModifyAddress = address; NewButton newbtnDelete = new NewButton(); newbtnDelete.Text = "删除";
newbtnDelete.DeleteOrModifyAddress = address;
this.panelContent.Controls.Add(txtShowContent);
this.panelContent.Controls.Add(newbtnModify);
this.panelContent.Controls.Add(newbtnDelete);
this.panelContent.Visible = true;
解决方案 »
- 清空缓存方面问题。标题要长~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!
- 在服务器端使用C#调用word.dll在线转换文档为htm文件的方案适合应用在互联网网站吗?
- HttpWebRequest 报错The remote name could not be resolved 怎么改掉???
- 上传到网站上后,JS文件无法执行?
- 如何给控件添加方法?
- 给分问题!急需解答!
- 求教把一个ArrayList 传到别一页面的方法
- ajax技术请求
- datagrid绑定多表查询的问题
- 电子邮箱的入口问题?form表单的问题?(ASP)急。。。在线等待
- 江湖救急,有没有这种样式的控件?
- 请问remoting的代理,能够拦截private方法吗?
不行吧,你动态生成的控件在浏览器端应该也是唯一的了!怎么可能再接着加呢,它的ID,你加到Panel中时已经默认会给了吧
System.Web.UI.WebControls.TextBox txtShowContent = new TextBox();
txtShowContent.ID = a.ToString();
txtShowContent.Width = 150;
txtShowContent.Height = 200;
txtShowContent.TextMode = TextBoxMode.MultiLine; NewButton newbtnModify = new NewButton();
newbtnModify.ID = a.ToString();
newbtnModify.Text = "修改";
newbtnModify.DeleteOrModifyAddress = address; NewButton newbtnDelete = new NewButton();
newbtnDelete.ID = (a + 1).ToString();
newbtnDelete.Text = "删除";
newbtnDelete.DeleteOrModifyAddress = address;
this.panelContent.Controls.Add(txtShowContent);
this.panelContent.Controls.Add(newbtnModify);
this.panelContent.Controls.Add(newbtnDelete);
this.panelContent.Visible = true;
a++;
ViewState["newbtnModify"] = true;
ViewState["newBtnDelete"] = true;
ViewState["txtShowContent"] = true;
设置了ID 还是不得行
panel里面加panel 我也试过了 还是不行
你点击两下后,还是那第一次加上的控件
你Form.Contorls.Count
总共还是那些个控件数目吧
怎么加呢?啊啊啊 我也晕了,怎么没高手来
你的总是显示3个,可能就是这个原因
建议:将添加过的控件存起来,比如存在ViewState或Session中
再点button添加时,先从Session中读出以前添加过的,然后在页面上添加一次,最后再添加这次要“新”添加的//希望对你有帮助
我在单独的一个页面里这样试过 private static Panel p = new Panel();
protected void Page_Load(object sender, EventArgs e)
{
this.Controls.Add(p);
}
protected void Button1_Click(object sender, EventArgs e)
{
Label label = new Label();
label.Text = "ccc";
this.Panel1.Controls.Add(label);
}这样的话就能 加进去 现在还在试 Ajax无刷新添加.但未能成功,继续加油...
protected void Button1_Click(object sender, EventArgs e)
{
Label label = new Label();
label.Text = "ccc";
p.Controls.Add(label);
}
public partial class asp_DynamicControls : System.Web.UI.Page
{
public int Quantity
{
get
{
return ViewState["Quantity"] != null ? (int)ViewState["Quantity"] : 1;
}
set { ViewState["Quantity"] = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSave_Click(object sender, EventArgs e)
{
int nCount=Quantity;
string strTxt = this.Request["txt"]!=null?this.Request["txt"].ToString():"";
string[] arrTxt = strTxt.Split(',');
List<string> lstAddItem = getItem(this.panelContent);
for (int i = 1; i <= nCount; i++)
{
System.Web.UI.WebControls.TextBox txtShowContent = new TextBox();
txtShowContent.Width = 150;
txtShowContent.Height = 200;
txtShowContent.TextMode = TextBoxMode.MultiLine;
txtShowContent.ID = "txt";
Button newbtnModify = new Button();
newbtnModify.Text = "修改";
Button newbtnDelete = new Button();
newbtnDelete.Text = "删除";
this.panelContent.Controls.Add(txtShowContent);
this.panelContent.Controls.Add(newbtnModify);
this.panelContent.Controls.Add(newbtnDelete);
this.panelContent.Visible = true;
if (i < nCount)
{
if (this.Request["txt"] != null&&arrTxt.Length>i-1)
{
txtShowContent.Text = arrTxt[i-1];
}
}
if (i == nCount)
{
ViewState["Quantity"] = nCount + 1;
}
}
} #region 获得Panel值(TextBox)(未使用)
/// <summary>
/// 获得Panel值(TextBox)
/// </summary>
/// <param name="dl"></param>
/// <returns></returns>
private List<string> getItem(Panel pl)
{ List<string> lstAddItem = new List<string>();
try
{
int nPlCount = pl.Controls.Count;
for (int i = 0; i < nPlCount; i++)
{
Object obj = (Object)pl.Controls[i];
if (obj is TextBox)
{
TextBox txt1 = (TextBox)obj;
lstAddItem.Add(txt1.Text.Trim());
continue;
}
}
}
catch (Exception ex)
{
}
return lstAddItem;
}
#endregion
}
这个是后台程序 看看能不能解决你的问题