我编写了一个从Active Directory获取数据的ASP.NET应用程序。我使用ListView来显示这些数据。用户在TextBox中输入字符串(姓氏或其中的一部分)。比ListView列出所有AD用户与TextBox中的相同字符串。每一行都有一个按钮“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但它不起作用:(我不能在我的应用程序中使用它。
塔拉索夫
答案 0 :(得分:1)
在命令
上使用ListView的ItemCommand而不是Button's见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
答案 1 :(得分: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");
}
}