我要实现的效果是:在页面上点击一个按钮就会调用js事件动态添加<input type="text">这个控件,然后在点击“提交”后,后台接收 用户在input中填写的值。
我发现,如果是在普通页面中做,可以顺利实现,但是放到母版页中 就不行了。代码我粘上来,请大家出出主意。
谢谢了。aspx:
从下代码都放在一个用母版页制作的aspx页面中。
=======================================================================
var count=0;
var uc=0;
function AddRow(t)
{
count++;
var newTr = document.getElementById(t).insertRow();
newTr.setAttribute("id",t+"tr" + count.toString());
var newTd0 = newTr.insertCell();
var newTd1 = newTr.insertCell();
var newTd2 = newTr.insertCell();
var newTd3 = newTr.insertCell();
newTd0.innerHTML=" <input type='input' name='U"+ count.toString()+"' id='U"+ count.toString()+"'>"; newTd0.innerHTML="<input type='input' name='U"+ count.toString()+"'>";
}
<input type="button" id="btnAdd" class="ButtonStyle" onClick="AddRow('t1');" value="添加行" />
<table id="t1"></table><asp:Button ID="Button1" runat="server" Text="提 交" CssClass ="ButtonStyle" onclick="Button1_Click" />
c#:
=======================================================
if (Request.Form["U1"]!= null) // 为做测试,我这里引用一个固定的input控件的名称。
{
Response.Write(Request.Form[["U1"]);
}
else
{
MessageBox.Show(this, "没有接到值啊!我日。");
}
我发现,如果是在普通页面中做,可以顺利实现,但是放到母版页中 就不行了。代码我粘上来,请大家出出主意。
谢谢了。aspx:
从下代码都放在一个用母版页制作的aspx页面中。
=======================================================================
var count=0;
var uc=0;
function AddRow(t)
{
count++;
var newTr = document.getElementById(t).insertRow();
newTr.setAttribute("id",t+"tr" + count.toString());
var newTd0 = newTr.insertCell();
var newTd1 = newTr.insertCell();
var newTd2 = newTr.insertCell();
var newTd3 = newTr.insertCell();
newTd0.innerHTML=" <input type='input' name='U"+ count.toString()+"' id='U"+ count.toString()+"'>"; newTd0.innerHTML="<input type='input' name='U"+ count.toString()+"'>";
}
<input type="button" id="btnAdd" class="ButtonStyle" onClick="AddRow('t1');" value="添加行" />
<table id="t1"></table><asp:Button ID="Button1" runat="server" Text="提 交" CssClass ="ButtonStyle" onclick="Button1_Click" />
c#:
=======================================================
if (Request.Form["U1"]!= null) // 为做测试,我这里引用一个固定的input控件的名称。
{
Response.Write(Request.Form[["U1"]);
}
else
{
MessageBox.Show(this, "没有接到值啊!我日。");
}
使用母板的话 看看网页上生成的源代码就知道了 ID名会改变的
楼上所说的方法,针对那些在页面中固有的控件而言是有效的
但是本案中 那些控件都是在客户端动态生成的,服务器端此时也许并不知道客户端会产生几个这样的控件,所以我想 是不是不用加“ctl00_body_”呢?此法 我已经实验了 还是不行啊
Response.Write(Request.Form[["U1"]); js生成的控件name值是不会改变
假如插入了5个textbox 他们name一样的话
<input name="t1" type="text" value="1" />
<input name="t1" type="text" value="2" />
<input name="t1" type="text" value="3" />
<input name="t1" type="text" value="4" />
<input name="t1" type="text" value="5" />
取值
protected void Button1_Click(object sender, EventArgs e)
{
string a = Page.Request.Form["t1"];
}此时a的值是1,2,3,4,5可以取得的
下班了~~