高手快进来看看....关于Repeater控件 循环 取输入框的问题
<asp:repeater >........
<asp:TextBox ID="txtjiaosename" runat="server" Width="85px" CssClass="STYLE2"></asp:TextBox></BR> <%--OnTextChanged="txtjiaosename_TextChanged" AutoPostBack="true"--%>
<asp:LinkButton id="lin1" runat="server" Visible=<%# GetError(DataBinder.Eval(Container.DataItem, "Flag").ToString(), DataBinder.Eval(Container.DataItem, "Status").ToString())=="0"%> OnClientClick="return confirmreset();" CommandName='<%# DataBinder.Eval(Container.DataItem,"Rid") %>' CommandArgument='<%# DataBinder.Eval(Container.DataItem,"PayActorID") %>' OnCommand="startResetBull" Text="恢复"></asp:LinkButton>
</asp:repeater >
.cs
public void startResetBull(object src, CommandEventArgs e)
{
// this.RegisterStartupScript("error1", "<script>alert('" + this.ViewState["jiaosename"] + "');</script>");
int num = int.Parse(e.CommandName);
int num2 = int.Parse(e.CommandArgument.ToString());
-- 这里 我要怎么取该行 'txtname' 输入框的值
} --------------------编程问答-------------------- repeater有一个ItemDataBound事件
--------------------编程问答-------------------- 如楼上的用法。这算不上很复杂的问题 --------------------编程问答-------------------- 标准做法不是楼主这样的.. --------------------编程问答-------------------- 首先把按钮的CommandName绑定为<%# Eval("Rid") %>是很奢侈的,如果想知道当前行的id,可以使用一个Label,CommandName往往是用来说明这个按钮的功能。
public partial class test : System.Web.UI.Page
{
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
TextBox[] txtname = new TextBox[e.Item.Controls.Count];
for (int i = 0; i < e.Item.Controls.Count; i++)
{
txtname[i] = (TextBox)e.Item.FindControl("txtname");
if (txtname[i] != null)
{
txtname[i].Text=//你要的值;
}
//break;看你需不需要继续
}
}
}
同时,默认情况下,Repeater中的按钮引发的就是Repeater的ItemCommand事件,然后在这个事件里,我们用CommandName来区分究竟是每个RepeaterItem中的那一个按钮(同一项中可能有多个按钮,使用CommandName区分)
所有楼主的前台aspx代码可以是这样的
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<asp:TextBox ID="txtjiaosename" runat="server" Width="85px" CssClass="STYLE2"> </asp:TextBox> </BR> <%--OnTextChanged="txtjiaosename_TextChanged" AutoPostBack="true"--%>
<asp:Label ID="Label1" runat="server" Text=' <%# Eval("Rid") %>' Visible="false"></asp:Label>
<asp:LinkButton id="lin1" runat="server" Visible= '<%# GetError(Eval("Flag").ToString(), Eval("Status").ToString())=="0"%>' OnClientClick="return confirmreset();" CommandName="Select" CommandArgument=' <%# Eval("PayActorID") %>' Text="恢复"> </asp:LinkButton>
<br />
</ItemTemplate>
</asp:Repeater>
后台aspx.cs
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)--------------------编程问答--------------------
{
//区分是哪个按钮
if (e.CommandName == "Select")
{
//这里得到文本框的值
Response.Write((e.Item.FindControl("txtjiaosename") as TextBox).Text);
}
}
学习了... --------------------编程问答-------------------- +1
--------------------编程问答-------------------- protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
TextBox[] txtname = new TextBox[e.Item.Controls.Count];
for (int i = 0; i < e.Item.Controls.Count; i++)
{
txtname[i] = (TextBox)e.Item.FindControl("txtname");
txtname[i].Text= 输入框的值
}
}
--------------------编程问答-------------------- 顶顶帖子,看看先
接分中........ --------------------编程问答--------------------
好嘛..
补充:.NET技术 , ASP.NET