2012-07-23 82 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