0

こんにちは、私は ListView を検索する検索ボックスを作成しようとしています。それを行うことができました。ユーザー名のみで検索できるようにしておくと機能します。ユーザー名をパラメーターに置き換えるとすぐに、コードは機能しなくなります。私のコードです:

string searchSelectBox = SearchSelectDropDown.SelectedItem.Text;

GetAllUsersFromDb.SelectCommand =
    "SELECT aspnet_Users.UserName, aspnet_Roles.RoleName, "
    + "aspnet_Membership.Email, aspnet_Membership.LastLoginDate "
    + "FROM aspnet_Users "
    + "INNER JOIN aspnet_UsersInRoles "
    + "ON aspnet_Users.UserId = aspnet_UsersInRoles.UserId "
    + "INNER JOIN aspnet_Roles "
    + "ON aspnet_UsersInRoles.RoleId = aspnet_Roles.RoleId "
    + "INNER JOIN aspnet_Membership "
    + "ON aspnet_Users.UserId = aspnet_Membership.UserId "
    + "WHERE @SelectField LiKE @Param";
GetAllUsersFromDb.SelectParameters.Clear();
GetAllUsersFromDb.SelectParameters.Add("SelectField" , searchSelectBox);
GetAllUsersFromDb.SelectParameters.Add("Param" , SearchBox.Text);
GetAllUsersFromDb.DataBind();
textListView.DataBind();    

searchSelectBox が取り得る値は、 Username 、 Rolename 、および Email です。

@SelectField をユーザー名に置き換えて正しいユーザー名を入力すると、sear は機能しますが、そのままでは機能しません。

ここで何が問題なのですか?

4

1 に答える 1

2

これを試して

string searchSelectBox = SearchSelectDropDown.SelectedItem.Text;

    GetAllUsersFromDb.SelectCommand =
       string.Format("SELECT aspnet_Users.UserName, aspnet_Roles.RoleName, 
                      aspnet_Membership.Email, aspnet_Membership.LastLoginDate 
                      FROM aspnet_Users 
                      INNER JOIN aspnet_UsersInRoles ON aspnet_Users.UserId = aspnet_UsersInRoles.UserId 
                      INNER JOIN aspnet_Roles ON aspnet_UsersInRoles.RoleId = aspnet_Roles.RoleId 
                      INNER JOIN aspnet_Membership ON aspnet_Users.UserId = aspnet_Membership.UserId 
                      WHERE {0} LiKE @Param", searchSelectBox);
    GetAllUsersFromDb.SelectParameters.Clear();

    GetAllUsersFromDb.SelectParameters.Add("Param" , SearchBox.Text);
    GetAllUsersFromDb.DataBind();
    textListView.DataBind(); 
于 2012-11-28T21:18:39.260 に答える