如下代码中,我想通过单击"lbtn_Show",以获得Repeater控件中的"literal_Start_Tag"和"literal_End_Tag"控件, 该怎么实现。 我试过用 (Literal)Repeater1.FindControl("literal_Start_Tag"); 但是得到的是null值<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default5.aspx.cs" Inherits="Default5" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="scriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:SqlDataSource ID="sds_Carton" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
            SelectCommand="SELECT SSCC18_Label, Order_Id, Shipment_Id, Buyer_Code, Carton_Number FROM Carton WHERE Job_Sheet_Id = 5166 ORDER BY Carton_Number">
        </asp:SqlDataSource>
        <asp:UpdatePanel ID="up_Main" runat="server" UpdateMode="conditional">
            <ContentTemplate>
                <asp:Repeater ID="Repeater1" runat="server" DataSourceID="sds_Carton">
                    <HeaderTemplate>
                        <table cellpadding="3" cellspacing="1" border="0" style="background-color: Gray;
                            font-family: Verdana; font-size: 11pt;">
                            <tr style="background-color: #EFEFEF; font-weight: bold;">
                                <td style="width: 10px;">
                                </td>
                                <td>
                                    SSCC18_Label</td>
                                <td>
                                    Order_Id</td>
                                <td>
                                    Shipment_Id</td>
                                <td>
                                    Buyer_Code</td>
                                <td>
                                    Carton_Number</td>
                            </tr>
                    </HeaderTemplate>
                    <AlternatingItemTemplate>
                        <tr style="background-color: White;" onmouseover="c = this.style.backgroundColor; this.style.backgroundColor = '#00EFEF'; this.style.cursor = 'hand';"
                            onmouseout="this.style.backgroundColor = c;">
                            <td>
                                <asp:LinkButton ID="lbtn_Show" runat="server" Text="+" Font-Underline="false" ForeColor="graytext"
                                    OnClick="lbtn_Show_Click"></asp:LinkButton></td>
                            <td>
                                <%#Eval("SSCC18_Label") %>
                            </td>
                            <td>
                                <%#Eval("Order_Id") %>
                            </td>
                            <td>
                                <%#Eval("Shipment_Id") %>
                            </td>
                            <td>
                                <%#Eval("Buyer_Code") %>
                            </td>
                            <td>
                                <%#Eval("Carton_Number") %>
                            </td>
                        </tr>
                        <asp:Literal ID="literal_Start_Tag" runat="server"></asp:Literal>
                        
                                <asp:Panel ID="panel_Carton_Content" runat="server" Visible="false">
                                </asp:Panel>
                          
                        <asp:Literal ID="literal_End_Tag" runat="server"></asp:Literal>
                    </AlternatingItemTemplate>
                    <ItemTemplate>
                        <tr style="background-color: White;" onmouseover="c = this.style.backgroundColor; this.style.backgroundColor = '#00EFEF'; this.style.cursor = 'hand';"
                            onmouseout="this.style.backgroundColor = c;">
                            <td>
                                <asp:LinkButton ID="lbtn_Show" runat="server" Text="+" Font-Underline="false" ForeColor="graytext"
                                    OnClick="lbtn_Show_Click"></asp:LinkButton></td>
                            <td>
                                <%#Eval("SSCC18_Label") %>
                            </td>
                            <td>
                                <%#Eval("Order_Id") %>
                            </td>
                            <td>
                                <%#Eval("Shipment_Id") %>
                            </td>
                            <td>
                                <%#Eval("Buyer_Code") %>
                            </td>
                            <td>
                                <%#Eval("Carton_Number") %>
                            </td>
                        </tr>
                        <tr style="background-color: White;">
                            <td>
                            </td>
                            <td colspan="5">
                                <asp:Panel ID="panel_Carton_Content" runat="server" Visible="false">
                                </asp:Panel>
                            </td>
                        </tr>
                    </ItemTemplate>
                    <FooterTemplate>
                        </table></FooterTemplate>
                </asp:Repeater>
            </ContentTemplate>
        </asp:UpdatePanel>
    </form>
</body>
</html>

解决方案 »

  1.   

    <AlternatingItemTemplate>
    交替行模版
    我看了你只有在交替行模版中加入了literal_Start_Tag,literal_End_Tag控件也就是只有在交替行中才能找到literal_Start_Tag和literal_End_Tag控件
      

  2.   

    Repeater 有Command时间监听Repeater  中的所有button 让后再用CommandArgument CommandName区分点击的是哪一行的按钮。lbtn_Show有这连个参数,后台在事件中也可以取到
      

  3.   

    findcontrols
    估计可以吧。
      

  4.   

    我找到方法了, 谢谢各位
        protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "Show")
            {
                LinkButton lbtn = (LinkButton)e.Item.FindControl("lbtn_Show"); 
                Literal start_Tag = (Literal)e.Item.FindControl("literal_Start_Tag");
                Literal end_Tag = (Literal)e.Item.FindControl("literal_End_Tag");
                SqlDataSource sds_Carton_Content = (SqlDataSource)e.Item.FindControl("sds_Carton_Content");
                GridView gv_Carton_Content = (GridView)e.Item.FindControl("gv_Carton_Content");
                Label lbl_SSCC18_Label = (Label)e.Item.FindControl("lbl_SSCC18_Label");
                if (lbtn.Text == "+")
                {
                    lbtn.Text = "-";
                    start_Tag.Text = @"<tr style='background-color: #FEEEEE; '>
                                <td>
                                </td>
                                <td colspan='5'>";
                    end_Tag.Text = @"  </td>
                            </tr>";
                    sds_Carton_Content.SelectParameters["SSCC18_Label"].DefaultValue = lbl_SSCC18_Label.Text.Trim();
                    gv_Carton_Content.DataBind();
                    gv_Carton_Content.Visible = true;
                }
                else
                {
                    lbtn.Text = "+";
                    start_Tag.Text = "";
                    end_Tag.Text = "";
                    sds_Carton_Content.SelectParameters["SSCC18_Label"].DefaultValue = "";
                    gv_Carton_Content.Visible = false;
                }
            }
        }