【问题标题】:ASP.NET RepeaterASP.NET 中继器
【发布时间】:2009-09-15 05:19:05
【问题描述】:

我不熟悉 asp.net 中继器控件。我在转发器中有两列,数量和 sku。单击按钮时,我想遍历转发器中的行并将每个数量和 sku 传递给一个方法。您如何在转发器中获取这些信息?

【问题讨论】:

    标签: asp.net repeater


    【解决方案1】:

    在按钮点击的方法中:

    foreach(RepeaterItem item in repeaterControlID.Items)
    {
        var quantity = item.FindControl("quantityControlID");
        var sku = item.FindControl("skuControlID");
    }
    

    或者类似的东西。您也可以使用 RepeaterItem 的 Controls 属性来查看它们。

    E:我对您的问题的解释是:“在单击按钮引起的回发中,我想遍历转发器中的项目并将这些值传递给方法。”这不适用于填充中继器在客户端javascript中做某事。

    当然,MSDN 是学习如何使用各种类的绝佳资源,例如 Repeater

    【讨论】:

      【解决方案2】:

      客户端还是服务器端?假设您的意思是服务器端,请使用转发器的 OnItemDataBound 事件。这将每行触发一次,并将该行的数据作为参数包含在内。

      【讨论】:

        【解决方案3】:

        这取决于您如何在 ItemTemplate 中显示“数量”和“sku”。如果你使用<%# DataBinder.Eval(Container, "quantity") %> 语法,你可以这样做:

        foreach(RepeaterItem item in Repeater1.Items)
                 {        
                    string quantity = ((DataBoundLiteralControl)item.Controls[0]).Text;
                    string sku = ((DataBoundLiteralControl)item.Controls[1]).Text;
        
                 }
        

        如果您可以发布您的 ItemTemplate,这将有所帮助。

        【讨论】:

          【解决方案4】:

          您还需要“键入”控件以访问其属性...

          foreach(RepeaterItem item in this.RptTest.Items){ string DdlTestValue = ((DropDown)item.FindControl("DdlTest")).SelectedValue; string TxtTestValue = ((TextBox)item.FindControl("TxtTest")).Text; }

          【讨论】:

            猜你喜欢
            • 2013-01-27
            • 2015-05-22
            • 2011-04-18
            • 2011-04-08
            • 2010-12-13
            • 2013-02-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多