【问题标题】:How to get Footer Item value on code behind with nested Repeater?如何使用嵌套中继器在代码后面获取页脚项值?
【发布时间】:2014-04-29 07:47:44
【问题描述】:

我有一个嵌套的转发器,我在页脚模板中使用了一个文本框。我想在按钮单击中获取 textbox.text 值。这是我的中继器:

    <asp:Repeater ID="rprSSFirst" runat="server" OnItemDataBound="rprSSFirst_ItemDataBound"  >

<HeaderTemplate>
    </HeaderTemplate>
            <ItemTemplate>
                //******Some Items******
               <asp:Repeater ID="rprSSNested" runat="server" >  //Nested Repeater
                    <HeaderTemplate>
                    </HeaderTemplate>
                      <ItemTemplate>
                           //******Some Items******
                      </ItemTemplate>
                    <FooterTemplate>   
                      <div style=" padding: 20px 35px;" id='ajax'>
                         <asp:TextBox ID="textbox" TextMode="MultiLine" Columns="50" Rows="10" runat="server"></asp:TextBox>
                         <br />
                         <asp:Button ID="Button2" runat="server" OnClick="btn_Save_Click" Text="Save" />                             
                      </div>  
                  </FooterTemplate>
                </asp:Repeater>
              </ItemTemplate>
            <FooterTemplate>

            </FooterTemplate>
        </asp:Repeater>

//在代码后面

protected void btn_Save_Click(object sender, EventArgs e)
{
 TextBox txtAns = (TextBox)rprSSFirst.Controls[rprSSFirst.Controls.Count - 1].FindControl("textbox");
}

txtAns 的值始终为空。如何在按钮单击中获取页脚项目textbox 值?还是其他方式?

感谢您的回答。

【问题讨论】:

    标签: c# asp.net repeater


    【解决方案1】:

    您必须首先找到两个控件所在的嵌套RepeaterItem。您可以通过投射NamingContainer

    protected void btn_Save_Click(object sender, EventArgs e)
    {
        Button btnSave = (Button) sender;
        RepeaterItem item = (RepeaterItem) btnSave.NamingContainer;
        TextBox txtAns = (TextBox) item.FindControl("textbox");
    }
    

    【讨论】:

      【解决方案2】:

      您可以将这样的 Commandname 属性用于嵌套中继器的按钮:

       <asp:Repeater ID="rprSSNested" runat="server" OnItemCommand="rprSSNested_ItemCommand" >  
                      <HeaderTemplate>
                      </HeaderTemplate>
                        <ItemTemplate>  
                             //******Some Items******
                        </ItemTemplate>
                      <FooterTemplate>   
                        <div style=" padding: 20px 35px;" id='ajax'>
                           <asp:TextBox ID="textbox" TextMode="MultiLine" Columns="50" Rows="10" runat="server" ></asp:TextBox>
                           <br />
                           <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Save" CommandName="cmd" CommandArgument="arg"/>                             
                        </div>  
                    </FooterTemplate>
                  </asp:Repeater> 
      

      并像这样在 c# 代码中添加事件:

      protected void rprSSNested_ItemCommand(object source, RepeaterCommandEventArgs e)
      {
          if (e.Item.ItemType == ListItemType.Footer)
          {
              if (e.CommandName == "cmd")
              {
                  string ss = ((TextBox)e.Item.FindControl("textbox")).Text;
                  Response.Write(ss);
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多