Невозможно получить доступ к элементу управления меткой (помещено в ItemTemplate) в коде позади файла - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь получить доступ к элементу управления меткой (помещенному в ItemTemplate) в коде файла, но не могу сделать то же самое.Я использую следующий код:

        <asp:ListView ID="lvData" runat="server" GroupPlaceholderID="groupPlaceHolder1" ItemPlaceholderID="itemPlaceHolder1"
            OnPagePropertiesChanging="listView_PagePropertiesChanging">
            <LayoutTemplate>
                <table >
                    <asp:PlaceHolder runat="server" ID="groupPlaceHolder1"></asp:PlaceHolder>
                </table>
            </LayoutTemplate>
            <GroupTemplate>
                <tr>
                    <asp:PlaceHolder runat="server" ID="itemPlaceHolder1"></asp:PlaceHolder>
                </tr>
            </GroupTemplate>
            <ItemTemplate>
                <table>
                    <tr>
                        <td>
                            <asp:Label ID="lblProfileID" runat="server" Text="LB1000"></asp:Label>
                        </td>
                    </tr>
                </table>
            </ItemTemplate>
        </asp:ListView>

В приведенном выше коде метка lblProfileID должна быть доступна в коде позади файла.Я написал следующий код на C #, но он показывает ошибку времени компиляции как «Имя lblProfileID не существует в текущем контексте».

    private void GetID()
    {
        string strID = lblProfileID.Text;
    }

1 Ответ

0 голосов
/ 08 июля 2019

Во-первых, я не вижу ничего из базы данных, и возникает вопрос: почему вы используете ListView?Вам действительно нужно задать значимый вопрос таким образом, чтобы помочь другим точно понять, какую проблему вы пытаетесь решить.

Вот типичный способ доступа к элементу управления вItemTemplate:

Разметка:

<asp:ListView ID="lvData" runat="server" GroupPlaceholderID="groupPlaceHolder1" ItemPlaceholderID="itemPlaceHolder1"
    OnPagePropertiesChanging="listView_PagePropertiesChanging" OnItemDataBound="ListView_ItemDataBound">
    ...
</asp:ListView>

Код сзади:

protected void ListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        DataRowView row = (DataRowView)e.Item.DataItem;

        ....
        Label lblProfileID = e.Item.FindControl("lblProfileID") as Label;
        string strID = lblProfileID.Text;
        ...
    }
}

ОБНОВЛЕНИЕ

Вы могли бы использовать метод выше, чтобы назначить значения DB для вашей метки.Вы также можете получить значение метки в вашем методе GetID () следующим образом:

private void GetID() 
{ 
    // First check if there is actually data being returned in an if statement
    foreach (ListViewDataItem item in lvData.Items) 
    {
        Label lblProfileID = e.Item.FindControl("lblProfileID") as Label;
        string strID = lblProfileID.Text;
    }    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...