0

Active Directory からデータを取得する ASP.NET アプリケーションを作成しました。ListView を使用してこのデータを表示します。ユーザーは文字列 (姓またはその一部) を TextBox に入力します。ListView よりも、TextBox からの同じ文字列を持つすべての AD ユーザーを一覧表示します。すべての行には、ユーザーに関する詳細情報を取得するためのボタン「Anzeigen」があります。この ListView には 6 つの列があり、すべての行にユーザーが表示されます。列番号 6 のボタンは「Anzeigen」です。ユーザーがこのボタンをクリックすると、この選択したユーザーに関する詳細情報を含む新しい Web フォーム "benutzer.aspx" が開き、行からセッション値 "email" が取得されます。

私の問題:

セッション値に必要な 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

Buttonのonコマンドではなく、ListViewのItemCommandを使用する

詳細については、 http://www.codeproject.com/Articles/24570/Complete-ListView-in-ASP-NET-3-5 を参照してください。もう1つ例から、作成者がe.Itemから値を抽出したことがわかります。キー(電子メール、ユーザー名など)をCommandArgumentとして渡すことができ、コマンド引数からその値に直接アクセスできます。それを渡す方法

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

Asp:ButtonではなくLinkbuttonも使用してください

于 2012-07-23T07:15:16.863 に答える
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 に答える