2009-03-14 3 views
0

Это, должно быть, моя особая удача, что сегодня я складываю с другой проблемой и во второй раз приезжаю сюда за помощью. И мне действительно нужна помощь в этом.Динамический обработчик событий для ListView?

У меня есть элемент управления listView, на котором у меня есть кнопка управления. Я пытаюсь добавить обработчик событий к этой кнопке, я много googled, прежде чем приходить сюда, но примеры, которые я нашел, либо не работают для меня, либо слишком сложны для моего понимания как новичок.

Что мне нужно, это добавить обработчик событий к кнопке, поэтому при нажатии кнопки какая-то функция (обработчик событий) будет выполняться на стороне сервера.

Вот код ASPX На вершине я Have

EnableEventValidation="false" 

Тогда сам ListView:


List of all the books that are currently in the Library.


<table width="630" cellpadding="2" cellspacing="5"/> 
    <tr style="background-color:#DBE2E2;"> 
     <th>Image</th> 
     <th>Book</th> 
     <th>Description</th> 

    </tr> 
     <asp:PlaceHolder ID="itemPlaceholder" runat="server" /> 
    </table> 

    <p> 
    <asp:DataPager ID="pageTopics" runat="server" PageSize="5"> 
     <Fields> 
      <asp:NextPreviousPagerField ShowFirstPageButton="false" ShowPreviousPageButton="true" ShowNextPageButton="false" /> 
      <asp:NumericPagerField /> 
      <asp:NextPreviousPagerField ShowFirstPageButton="false" ShowPreviousPageButton="false" ShowNextPageButton="true" ShowLastPageButton="false" /> 
     </Fields> 
    </asp:DataPager> 
    </p> 
</LayoutTemplate> 
<ItemTemplate> 
    <tr> 
    <td valign="top"> <br /> 
     <asp:Image ID="book_img" ImageUrl='<%# Eval("book_img") %>' Height="100" Width="100" runat="server" /> 
    </td> 

    <td valign="top"><p><b>Book Name: </b><asp:Label ID="book_name" runat="server" Text='<%# Eval("book_name") %>' /><br /> 
     <b>Author: </b><asp:Label ID="book_author" runat="server" Text='<%# Eval("book_author") %>' /><br /> 
    <p></td> 

    <td valign="top"><p><asp:Label ID="book_short_desc" runat="server" Text='<%# Eval("book_short_desc") %>' /><br /> 
     <b>Sku id: </b><asp:Label ID="book_squ" runat="server" Text='<%# Eval("book_squ") %>' /><br /> 
     <b>Arrived On: </b><asp:Label ID="book_arrived" runat="server" Text='<%# Eval("book_arrived") %>' /> 
     <asp:HyperLink ID="bookDesc" runat="server" NavigateUrl='<%# "BookDesc.aspx?id=" + Eval("book_id") %>' Text="To read more..." /> 
     <asp:Button ID="orderbook" runat="server" CommandName="order" CommandArgument="ordernow" Text="order now" /> 
    </p></td> 

    </tr> 
</ItemTemplate> 

И в CodeBehind я пытаюсь выполнить следующий код:

override protected void OnInit(EventArgs e) 
{ 
     base.OnInit(e); 
     book_list.ItemCommand += new EventHandler<ListViewCommandEventArgs>(book_list_ItemCommand); 
} 


void book_list_ItemCommand(object sender, ListViewCommandEventArgs e) 
{ 
    testLabel.Text = e.CommandArgument.ToString(); 
    //throw new NotImplementedException(); 
} 

Однако при отладке book_list_ItemCommand не выполняется.

Мне очень нужна помощь в этом вопросе.

Заранее спасибо.

ответ

1

После того как я сломал себе голову над стеной, я действительно нашел способ. Я отправлю его здесь, так что, возможно, кто-то с подобной проблемой найдет решение для себя.

Это моя кнопка, которая находится в ListView

<asp:Button ID="orderbook" runat="server" CommandName="order" CommandArgument="ordernow" OnCommand="Order_Command" Text="order now" /> 

И в код я добавил

protected void Order_Command(object sender, CommandEventArgs e) 
    { 
     if (e.CommandName == "order") 
     { 
      testLabel.Text = e.CommandName.ToString(); 
     } 
    } 

И теперь, когда я нажимаю на кнопку, он ловит событие.

Смежные вопросы