HTML CODE
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<tr>
<td><input type="text" id="a" /> </td>
<td><input type="text" id="adf" /> </td>
<td><input type="text" id="bba" /> </td>
...
<td><input type="text" id="N" /> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
C# CODE
protected void Button1_Click(object sender, EventArgs e)
{
// 问题:这里如何遍历取值
}
15 个解决方案
#1
关注
#2
自已顶一下。
#3
你的Button1在Repeater的模板中还是在外面?
关键是要取得相应行的RepeaterItem,才能找到里面的Input。
关键是要取得相应行的RepeaterItem,才能找到里面的Input。
#4
在 Repeater 的外面。
#5
你可以把Item部分写成一个用户控件,然后每个input都是用户控件中的某个属性(当然是一个集合类型的)的值。
在遍历时,只需要得到这个用户控件,然后找到这个用户控件所对应的属性区遍历就可以了。当然,这个集合也可以是你自己定义的。
在遍历时,只需要得到这个用户控件,然后找到这个用户控件所对应的属性区遍历就可以了。当然,这个集合也可以是你自己定义的。
#6
同问
#7
你将按钮放到Repeaterd的模板中会好做许多。
#8
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<tr>
<td> <input type="text" id="a" runat=server /> </td>
<td> <input type="text" id="adf" runat=server/> </td>
<td> <input type="text" id="bba" runat=server/> </td>
...
<td> <input type="text" id="N" runat=server/> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
//
protected void Button1_Click(object sender, EventArgs e)
{
// 遍历所有 Item
foreach(RepeaterItem item in Repeater1.Items) {
foreach(Control ctrl in item.Controls ) {
if(ctrl is HtmlInputText) {
string s = ((HtmlInputText)ctrl).Value;
// puts your more codes here
// ...
}
}
}
}
<ItemTemplate>
<tr>
<td> <input type="text" id="a" runat=server /> </td>
<td> <input type="text" id="adf" runat=server/> </td>
<td> <input type="text" id="bba" runat=server/> </td>
...
<td> <input type="text" id="N" runat=server/> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
//
protected void Button1_Click(object sender, EventArgs e)
{
// 遍历所有 Item
foreach(RepeaterItem item in Repeater1.Items) {
foreach(Control ctrl in item.Controls ) {
if(ctrl is HtmlInputText) {
string s = ((HtmlInputText)ctrl).Value;
// puts your more codes here
// ...
}
}
}
}
#9
从头到尾的获取每个模板中的Input,我估计不是Lz想要的,他只是想要某个特定的RepeaterItem中的Input。
#10
我是想从头到尾获取每个模板的 Input ,同时前面的 Input 中,不能添加 runat = "server" ,这一点是个特珠的要求。
#11
按你的的要求,8楼正解!
#12
foreach (RepeaterItem item in this.Repeater1.Items)
{
string value = ((TextBox)item.FindControl("控件ID")).Text;
}
{
string value = ((TextBox)item.FindControl("控件ID")).Text;
}
#13
不使用 runat=server ,当然用经典ASP 的方法了 Request.Form
注意:每个 input 必须具有 name,如果没有 name 你的input根本不会被提交,因为http协议是认 name 的,不知道 id,id是client的
string[] values = Request.Params.GetValues("__my_input"); // 这就是所有的值了
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<tr>
<td> <input type="text" id="a" name="__my_input" /> </td>
<td> <input type="text" id="adf" name="__my_input" /> </td>
<td> <input type="text" id="bba" name="__my_input" /> </td>
...
<td> <input type="text" id="N" name="__my_input" /> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
#14
1.
当然你可能是需要另一种用法,每个 input 的 name 不一样
常识:name 是可以相同的,相同的时候成组提交,但是 id 是不能相同的!
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<tr>
<td> <input type="text" id="a" name=" __my_input$a" /> </td>
<td> <input type="text" id="adf" name="__my_input$adf" /> </td>
<td> <input type="text" id="bba" name="__my_input$bba" /> </td>
...
<td> <input type="text" id="N" name="__my_input$N" /> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
IList<string> list = new List<string>;
foreach (string k in Request.Form.AllKeys)
{
if (k.IndexOf("__my_input$") == 0)
{
list.Add(Request.Form[k]);
}
}
// list 就是所有的值
2.
做Web开发,无论开发平台封装得如何,基础知识,如HTTP协议,Classic ASP 请求/响应一定要理解
当然你可能是需要另一种用法,每个 input 的 name 不一样
常识:name 是可以相同的,相同的时候成组提交,但是 id 是不能相同的!
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<tr>
<td> <input type="text" id="a" name=" __my_input$a" /> </td>
<td> <input type="text" id="adf" name="__my_input$adf" /> </td>
<td> <input type="text" id="bba" name="__my_input$bba" /> </td>
...
<td> <input type="text" id="N" name="__my_input$N" /> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
IList<string> list = new List<string>;
foreach (string k in Request.Form.AllKeys)
{
if (k.IndexOf("__my_input$") == 0)
{
list.Add(Request.Form[k]);
}
}
// list 就是所有的值
2.
做Web开发,无论开发平台封装得如何,基础知识,如HTTP协议,Classic ASP 请求/响应一定要理解
#1
关注
#2
自已顶一下。
#3
你的Button1在Repeater的模板中还是在外面?
关键是要取得相应行的RepeaterItem,才能找到里面的Input。
关键是要取得相应行的RepeaterItem,才能找到里面的Input。
#4
在 Repeater 的外面。
#5
你可以把Item部分写成一个用户控件,然后每个input都是用户控件中的某个属性(当然是一个集合类型的)的值。
在遍历时,只需要得到这个用户控件,然后找到这个用户控件所对应的属性区遍历就可以了。当然,这个集合也可以是你自己定义的。
在遍历时,只需要得到这个用户控件,然后找到这个用户控件所对应的属性区遍历就可以了。当然,这个集合也可以是你自己定义的。
#6
同问
#7
你将按钮放到Repeaterd的模板中会好做许多。
#8
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<tr>
<td> <input type="text" id="a" runat=server /> </td>
<td> <input type="text" id="adf" runat=server/> </td>
<td> <input type="text" id="bba" runat=server/> </td>
...
<td> <input type="text" id="N" runat=server/> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
//
protected void Button1_Click(object sender, EventArgs e)
{
// 遍历所有 Item
foreach(RepeaterItem item in Repeater1.Items) {
foreach(Control ctrl in item.Controls ) {
if(ctrl is HtmlInputText) {
string s = ((HtmlInputText)ctrl).Value;
// puts your more codes here
// ...
}
}
}
}
<ItemTemplate>
<tr>
<td> <input type="text" id="a" runat=server /> </td>
<td> <input type="text" id="adf" runat=server/> </td>
<td> <input type="text" id="bba" runat=server/> </td>
...
<td> <input type="text" id="N" runat=server/> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
//
protected void Button1_Click(object sender, EventArgs e)
{
// 遍历所有 Item
foreach(RepeaterItem item in Repeater1.Items) {
foreach(Control ctrl in item.Controls ) {
if(ctrl is HtmlInputText) {
string s = ((HtmlInputText)ctrl).Value;
// puts your more codes here
// ...
}
}
}
}
#9
从头到尾的获取每个模板中的Input,我估计不是Lz想要的,他只是想要某个特定的RepeaterItem中的Input。
#10
我是想从头到尾获取每个模板的 Input ,同时前面的 Input 中,不能添加 runat = "server" ,这一点是个特珠的要求。
#11
按你的的要求,8楼正解!
#12
foreach (RepeaterItem item in this.Repeater1.Items)
{
string value = ((TextBox)item.FindControl("控件ID")).Text;
}
{
string value = ((TextBox)item.FindControl("控件ID")).Text;
}
#13
不使用 runat=server ,当然用经典ASP 的方法了 Request.Form
注意:每个 input 必须具有 name,如果没有 name 你的input根本不会被提交,因为http协议是认 name 的,不知道 id,id是client的
string[] values = Request.Params.GetValues("__my_input"); // 这就是所有的值了
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<tr>
<td> <input type="text" id="a" name="__my_input" /> </td>
<td> <input type="text" id="adf" name="__my_input" /> </td>
<td> <input type="text" id="bba" name="__my_input" /> </td>
...
<td> <input type="text" id="N" name="__my_input" /> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
#14
1.
当然你可能是需要另一种用法,每个 input 的 name 不一样
常识:name 是可以相同的,相同的时候成组提交,但是 id 是不能相同的!
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<tr>
<td> <input type="text" id="a" name=" __my_input$a" /> </td>
<td> <input type="text" id="adf" name="__my_input$adf" /> </td>
<td> <input type="text" id="bba" name="__my_input$bba" /> </td>
...
<td> <input type="text" id="N" name="__my_input$N" /> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
IList<string> list = new List<string>;
foreach (string k in Request.Form.AllKeys)
{
if (k.IndexOf("__my_input$") == 0)
{
list.Add(Request.Form[k]);
}
}
// list 就是所有的值
2.
做Web开发,无论开发平台封装得如何,基础知识,如HTTP协议,Classic ASP 请求/响应一定要理解
当然你可能是需要另一种用法,每个 input 的 name 不一样
常识:name 是可以相同的,相同的时候成组提交,但是 id 是不能相同的!
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<tr>
<td> <input type="text" id="a" name=" __my_input$a" /> </td>
<td> <input type="text" id="adf" name="__my_input$adf" /> </td>
<td> <input type="text" id="bba" name="__my_input$bba" /> </td>
...
<td> <input type="text" id="N" name="__my_input$N" /> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
IList<string> list = new List<string>;
foreach (string k in Request.Form.AllKeys)
{
if (k.IndexOf("__my_input$") == 0)
{
list.Add(Request.Form[k]);
}
}
// list 就是所有的值
2.
做Web开发,无论开发平台封装得如何,基础知识,如HTTP协议,Classic ASP 请求/响应一定要理解