当前位置:编程学习 > C#/ASP.NET >>

高手快进来看看....关于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事件

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;看你需不需要继续
          }
    } 
--------------------编程问答-------------------- 如楼上的用法。这算不上很复杂的问题 --------------------编程问答-------------------- 标准做法不是楼主这样的.. --------------------编程问答-------------------- 首先把按钮的CommandName绑定为<%# Eval("Rid") %>是很奢侈的,如果想知道当前行的id,可以使用一个Label,CommandName往往是用来说明这个按钮的功能。

同时,默认情况下,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);
    }
}
--------------------编程问答--------------------
引用 4 楼 amandag 的回复:
首先把按钮的CommandName绑定为<%# Eval("Rid") %>是很奢侈的,如果想知道当前行的id,可以使用一个Label,CommandName往往是用来说明这个按钮的功能。

同时,默认情况下,Repeater中的按钮引发的就是Repeater的ItemCommand事件,然后在这个事件里,我们用CommandName来区分究竟是每个RepeaterItem中的那一个按钮(同……

学习了... --------------------编程问答--------------------
引用 4 楼 amandag 的回复:
首先把按钮的CommandName绑定为<%# Eval("Rid") %>是很奢侈的,如果想知道当前行的id,可以使用一个Label,CommandName往往是用来说明这个按钮的功能。

同时,默认情况下,Repeater中的按钮引发的就是Repeater的ItemCommand事件,然后在这个事件里,我们用CommandName来区分究竟是每个RepeaterItem中的那一个按钮(同……
+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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,