listview OnItemCommand не запускается - PullRequest
0 голосов
/ 11 января 2011

когда я нажимаю любую кнопку ссылки в списке, она вообще не запускается

<div>
   <%
      String[] d1 = { "1", "2", "3" };
      String[] d2 = { "4", "5", "6", "7" };
      ListView1.DataSource = d1;
      ListView1.DataBind();
      ListView2.DataSource = d2;
      ListView2.DataBind();
   %>
   <asp:ListView ID="ListView1" runat="server" OnItemCommand="lv_command">
      <LayoutTemplate>
          <ul>
              <asp:PlaceHolder ID="itemPlaceholder" runat="server" />
          </ul>
      </LayoutTemplate>
      <ItemTemplate>
          <asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton>
      </ItemTemplate>
   </asp:ListView>
   <asp:ListView ID="ListView2" runat="server" OnItemCommand="lv_command">
      <LayoutTemplate>
          <ul>
              <asp:PlaceHolder ID="itemPlaceholder" runat="server" />
          </ul>
      </LayoutTemplate>
      <ItemTemplate>
          <asp:LinkButton ID="LinkButton2" runat="server">LinkButton</asp:LinkButton>
      </ItemTemplate>
   </asp:ListView>
</div>

protected void lv_command(object sender, ListViewCommandEventArgs e)
{
  int i = 0;
}

Ответы [ 2 ]

2 голосов
/ 11 января 2011

Установите свойство CommandName каждого из LinkButtons, например:

 <asp:LinkButton ID="LinkButton1" runat="server" CommandName="MyCommand">LinkButton</asp:LinkButton>

Таким образом, при возникновении события ItemCommand вы можете определить, вызывается ли оно из кнопки ссылки, следующим образом:1005 *

Кроме того, с точки зрения производительности более целесообразно привязывать представление списка только при начальной загрузке и при необходимости связывать его снова с определенными обработчиками событий:

    protected void Page_Load(object sender, EventArgs e)
{
   if(!Page.IsPostBack)
   {
    String[] d1 = { "1", "2", "3" };
    String[] d2 = { "4", "5", "6", "7" };
    ListView1.DataSource = d1;
    ListView1.DataBind();
    ListView2.DataSource = d2;
    ListView2.DataBind();
   }
}
0 голосов
/ 11 января 2011

Переместите логику, которая выполняет привязку данных в код позади:

protected void Page_Load(object sender, EventArgs e)
{
    String[] d1 = { "1", "2", "3" };
    String[] d2 = { "4", "5", "6", "7" };
    ListView1.DataSource = d1;
    ListView1.DataBind();
    ListView2.DataSource = d2;
    ListView2.DataBind();
}

protected void lv_command(object sender, ListViewCommandEventArgs e)
{
  int i = 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...