0

我编写了一个从 Active Directory 获取数据的 ASP.NET 应用程序。我使用 ListView 来显示这些数据。用户在文本框中输入一个字符串(姓氏或其中的一部分)。比 ListView 列出 TextBox 中具有相同字符串的所有 AD 用户。每条线路都有一个按钮“Anzeigen”以获取有关用户的更多信息。此 ListView 有六列,每行显示一个用户。第六列是“Anzeigen”按钮。如果用户单击此按钮,则打开一个新的 WebForm“benutzer.aspx”,其中包含有关此选定用户的更多信息,并从该行获取会话值“电子邮件”。

我的问题:

我不知道如何获得会话值所需的 ListView 行的索引。

我的代码:

cs 文件:

 protected void Button1_Command(object sender, CommandEventArgs e)
        {
            if (e.CommandName == "Anzeigen")
            {

                //This give me everyone the Value -1 back 
                int selectedLine = myListView.SelectedIndex; 

                //I need the Line Index for the right Value
                Label lb = (Label)myListView.Items[selectedLine].FindControl("Label2"); 

                   string email = lb.Text;

                   Session["email"] = email; 

                Response.Redirect("Benutzer.aspx");

            }

        }

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:Button ID="Button1" Text="Anzeigen" OnCommand="Button1_Command" CommandName="Anzeigen" CommandArgument="myArgument" runat="server" /></td>

            </tr>

        </ItemTemplate>
...

我搜索并找到 listview selectedindices 但它不起作用:(而且我不能在我的 Application 中使用它。

塔拉索夫

4

2 回答 2

1

ASPX:

<td align="left"><asp:Button ID="Button1" Text="Anzeigen" OnCommand="Button1_Command" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>'  runat="server" /></td>

CS:

protected void Button1_Command(object sender, CommandEventArgs e)
        {
            if (e.CommandName == "Select")
            {
               int index = Convert.ToInt32(e.CommandArgument);

                Label lb = (Label)myListView.Items[index].FindControl("Label2");

                string email = lb.Text;

                Session["email"] = email;

                Response.Redirect("Benutzer.aspx");

            }

        }
于 2012-07-23T12:13:40.157 回答
1

使用 ListView 的 ItemCommand 而不是 Button 的 on 命令

有关详细信息,请参阅http://www.codeproject.com/Articles/24570/Complete-ListView-in-ASP-NET-3-5 。另一件事 从示例中您可以看到作者已经从 e.Item 中提取了值。您可以将密钥(电子邮件、用户名或其他)作为 CommandArgument 传递,并且可以直接从命令参数访问该值。如何通过它

<asp:LinkButton ID="myLink" runat="server" CommandName="Anzeigen" CommandArgument='<%#Eval("KeyColumn")%>'>Anzeigen</asp:LinkButton>

也使用 Linkbutton 而不是 Asp:Button

于 2012-07-23T07:15:16.863 回答