Search code examples
c#asp.netlistviewactive-directoryitemcommand

How I use the ItemCommand Event for my ListView in my ASP.NET Application


I have a ASP.NET Application with a ListView. In every Row in my ListView I have a LinkButton that open a new webform "Benutzer.aspx". my Problem is that I don't get the Index of this Row. I use the ItemCommand Event but it not work :(

Here my Code:

ASPX:

...

        <ItemTemplate>

            <tr runat="server"> 

                <td align="left" ><asp:Label ID="Label1" Text='<%# Eval("Benutzer") %>' runat="server" /></td>
                <td align="left"><asp:Label ID="Label2" Text='<%# Eval("eMail") %>' runat="server" /></td>
                <td align="left"><asp:Label ID="Label3" Text='<%# Eval("Vorname") %>' runat="server" /></td>
                <td align="left"><asp:Label ID="Label4" Text='<%# Eval("Nachname") %>' runat="server" /></td>
                <td align="left"><asp:Label ID="Label5" Text='<%# Eval("Telefon") %>' runat="server" /></td>

             <td align="left"><asp:LinkButton runat="server" Text="Anzeigen" CommandName="Anzeigen" OnCommand="ListView1_ItemCommand" CommandArgument="myArguments"></asp:LinkButton></td>

            </tr>

        </ItemTemplate>

...

cs file:

...

protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)
        {
            if (e.CommandName == "Anzeigen")
            {
                Label lbText = (Label)e.Item.FindControl("Label2");

               string email = lbText.Text;

               Session["email"] = email;

               Response.Redirect("Benutzer.aspx");

            }
        }

...

What is the matter :(

tarasov


Solution

  • Try this:

    First you need to have the index of the button. So in the html code add this in the CommandArgument of the button to get the index:

    CommandArgument='<%# Container.DataItemIndex %>'
    

    Then in the codebehind:

    if (e.CommandName == "Anzeigen")
    {
          Label lbText = ListView1.Item[e.CommandArgument].FindControl("Label2");
          string email = lbText.Text;           
    
               Session["email"] = email;           
    
               Response.Redirect("Benutzer.aspx");           
    }
    

    Hope I Helped