中继器拉动为Null是代码背后?

时间:2015-06-10 08:26:24

标签: c# sql repeater

我在网站上有常见问题的转发器,我试图将其分成几类,具体取决于与之相关的树状结构。

当我在后面的代码中引用转发器(rp_FAQ)来检查它是否为null所以我可以将类别id传递给存储过程,当我检查它是否为空时我需要该项存在时它保持返回null。 / p>

我似乎无法找到问题的路线,因为第二组眼睛真的很感激。

感谢。

我有这个转发器:

                    <asp:Repeater ID="rp_FAQ" DataSourceID="DS_GetFAQs" runat="server" OnItemDataBound="rp_FAQCategories_ItemDataBound">
                    <HeaderTemplate>
                        <div class="container-full fares_container">
                            <div class="row">
                    </HeaderTemplate>
                    <ItemTemplate>

                        <dt>Q: <%# Eval("Question") %></dt>
                        <dd>A: <%# Eval("Answer") %></dd>

                    </ItemTemplate>
                    <FooterTemplate>
                        </dl>
                        </div>
                    </div>
                    </FooterTemplate>
                </asp:Repeater>

这是我背后的代码:

    protected void rp_FAQCategories_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    Repeater rp_FAQRep = e.Item.FindControl("rp_FAQ") as Repeater;

    if (rp_FAQRep != null)
    {

        if (TreeData.CurrentDefault.IsRelation(Convert.ToInt32(Resources.Pages.FAQ)))
        {
            DS_GetFAQs.SelectParameters["CategoryID"].DefaultValue = "1";
        }

        rp_FAQRep.DataSource = DS_GetFAQs;
        rp_FAQRep.DataBind();
    }
}

3 个答案:

答案 0 :(得分:1)

问题是您试图在 rp_FAQ内的控件中找到rp_FAQ控件。

由于e.ItemRepeatItem下的rp_FAQ,您可以根据自己的意愿投出e.Item.Parentsender

答案 1 :(得分:1)

e.ItemRepeaterItem中的Repeater - 它不包含Repeater本身。只需投射活动的sender

var rp_FAQRep = (Repeater)sender;

答案 2 :(得分:1)

只有在尝试获取引发事件的控件内的控件(在本例中为FindControl)时才需要ItemDataBound方法。因此,如果控件未嵌套在另一个控件中,则可以直接引用该控件,或者使用sender。例如:

var rp_FAQRep = rp_FAQ; //A bit pointless but demonstrates the point

var rp_FAQRep = (Repeater)sender;