繁体   English   中英

标签引用在代码后面的适当位置

[英]Appropriate location of label reference in code-behind

为什么对lblFlagged起作用:

<asp:Label ID="lblFlagged" runat="server" Text="x" />
<table>
    <tr>
        <td><asp:Label ID="lblCurrUser" runat="server" Text="MyText" Visible="false"></asp:Label></td>
    </tr>
    <tr>
        <td><h1><asp:Label ID="lblMailbox" runat="server" style="color:cornflowerblue; font-size:x-large; font-weight:bold" Text="MyText"></asp:Label></h1></td>
    </tr>
    <tr>
        <td>

            <asp:UpdatePanel ID="SearchPanel" runat="server">

                <ContentTemplate>
                    <asp:Repeater ID="MailRepeater" runat="server" onitemcommand="MailRepeater_ItemCommand" OnItemDataBound="MailRepeater_DataBinding">
                         <HeaderTemplate>  
                             <table>
                                    <tr style="height:7px">
                                        <td style="width:95px"> 
                                            <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
                                        </td>
                                        <td style="width:110px"> 
                                            <asp:Label ID="lblFromH" runat="server" Text="From"></asp:Label>
                                        </td>

等等....

而且这不是:

<table>
    <tr>
        <td><asp:Label ID="lblCurrUser" runat="server" Text="MyText" Visible="false"></asp:Label></td>
    </tr>
    <tr>
        <td><h1><asp:Label ID="lblMailbox" runat="server" style="color:cornflowerblue; font-size:x-large; font-weight:bold" Text="MyText"></asp:Label></h1></td>
    </tr>
    <tr>
        <td>

            <asp:UpdatePanel ID="SearchPanel" runat="server">

                <ContentTemplate>
                    <asp:Repeater ID="MailRepeater" runat="server" onitemcommand="MailRepeater_ItemCommand" OnItemDataBound="MailRepeater_DataBinding">
                         <HeaderTemplate>  
                             <table>
                                    <tr style="height:7px">
                                        <td style="width:95px"> 
                                            <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
                                        </td>
                                        <td style="width:110px"> 
                                            <asp:Label ID="lblFlagged" runat="server" Text="From"></asp:Label>
                                        </td>

等等....

(请注意,在第一个示例中,它在第一行中,而在第二个示例中,它在最后一行中)

请特别注意标签“ lblFlagged”。 在第一种情况下,如果愿意,可以在代码隐藏中设置该值。 在第二种情况下,它在后面的代码中用红色下划线表示“在当前上下文中不存在”。 在第二个示例中的designer.cs文件中也缺少此文件。

这与UpdatePanel有关吗? 有办法解决吗?

lblFlagged已被移到转发器内部,这使它不再可被您的页面或控件直接访问,因为现在转发器的数据源中的每个项目都有一个标签。

使用RepeaterItem.FindControl()在类似重复项的循环或OnItemDataBound事件的地方找到控件。

protected void MailRepeater_DataBinding(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        var lbl = (Label)e.Item.FindControl("lblFlagged");
        lbl.Text = "Hello world";
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM