2012-07-23 42 views
0

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

我的问题:

我不知道我是如何得到我需要的会话值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> 
... 

我搜索,我发现列表视图将selectedIndices但它不工作:(我不” t可在我的应用程序中使用它。

塔拉索夫

回答

1

使用ListView控件的ItemCommand,而不是按钮的开命令

看到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> 

还可以使用LinkBut​​ton的,而不是天冬氨酸:按钮

+0

这给没有其他的方式来获得行索引? :/ – Tarasov 2012-07-23 07:41:40

+0

为什么你需要一个行索引,如果你能得到完整的行和关键列值? – ZafarYousafi 2012-07-23 08:01:33

+0

但它不工作:(我想用ItemCommand事件 – Tarasov 2012-07-23 11:39:37

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"); 

      } 

     } 
+0

解决方案... – Tarasov 2012-07-23 12:14:02