найти контроль в списке - PullRequest
       25

найти контроль в списке

0 голосов
/ 08 сентября 2011

Нажав кнопку в GridView, мне нужно найти элемент управления в Listview.

<ItemTemplate>
<td>

    <asp:Label ID="lblMarketLVBalanceHeader" runat="server" Text="Balance: "></asp:Label>
</td>


<td>
    <asp:Label ID="lblMarketLVBalanceValue" runat="server" Text='<%# Bind("Money", "{0:####}$") %>'></asp:Label>

</td>

</ItemTemplate>

Код сзади:

protected void GVMarketItems_RowCommand(object sender, GridViewCommandEventArgs e)
    {
if (e.CommandName.Equals("Buy"))
        {  GridViewRow row = (GridViewRow)(((Button)e.CommandSource).NamingContainer);
         /*  string itemID = row.Cells[0].Text;
           string itemName = row.Cells[1].Text;
           string itemCostStr = row.Cells[3].Text; */
 string curBalanceStr = ((Label)LVMarketBalanceShow.FindControl("lblMarketLVBalanceValue")).Text;
}

Код кажется найденным, но у меня "Ссылка на объект не установлена ​​наэкземпляр объекта ", когда я пытаюсь найти элемент управления.

string curBalanceStr = ((Label)LVMarketBalanceShow.FindControl("lblMarketLVBalanceValue")).Text;

Сделал то же самое для DetailsView, и это было нормально .. Что не так с ListView?

UPD: Попытка получить первый поток списка

ListViewDataItem curBalanceLV = LVMarketBalanceShow.Items[0];
       string curBalanceStr =((Label)curBalanceLV.FindControl("lblMarketLVBalanceValue")).Text;

Но появляется ошибка «Индекс вышел за пределы диапазона».

Ответы [ 2 ]

1 голос
/ 08 сентября 2011

Сделал то же самое для DetailsView, и все было в порядке .. Что не так с ListView?

DetailsView используется для работы с одной строкой за раз, поэтому вы можете напрямую вызывать FindControl() в подробном представлении, но gridview и listview предназначены для отображения нескольких записей, и ваша разметка, определенная вами внутри <ItemTemplate />, является просто шаблоном каждый ряд. Вы сможете найти элементы управления, которые вы определяете в шаблоне внутри каждой строки.

1 голос
/ 08 сентября 2011

Я думаю, вы хотите найти элемент управления в определенной строке.

string curBalanceStr = ((Label)row.FindControl("lblMarketLVBalanceValue")).Text
...