如何在DNN中获取特定的userinfo

时间:2015-08-19 08:30:27

标签: c# asp.net arraylist dotnetnuke

您好我在DNN中使用C#开发我的模块而且我已经使用这个检索了用户:

public ArrayList bindingListHere(string txtSearchUser){
    string getUsers = txtSearchUser;
    int totalrecords = 10;
    Users= UserController.GetUsersByUserName(PortalId, getUsers + "%", 0, 10, ref totalrecords, true, IsSuperUser);
    return Users;
}

我把它绑在这里:

protected void Search(object sender, EventArgs e){
    //calling the method from the lib that will search user of the portal
    DownloadCtrLib dctrl = new DownloadCtrLib ();
    dctrl.bindingListHere (txtSearchUser.Text);
    gvUser.DataSource = dctrl.bindingListHere (txtSearchUser.Text);
    gvUser.DataBind();
}

它工作正常。它显示有关门户用户的所有信息,例如:

Email 
Firstname 
Lastname 
portalID

等...

我不想要。因为我只需要UserID,Username和用户的DisplayName。我怎样才能做到这一点?有什么建议吗?

2 个答案:

答案 0 :(得分:4)

在代码中添加一个新的简单类,该代码只包含您需要的字段。

public class UserBindings
{
    public int UserID { get; set; }
    public string Username { get; set; }
    public string DisplayName { get; set; }
}

然后对您的绑定方法稍作修改:

public List<UserBindings> bindingListHere(string txtSearchUser)
{
    string getUsers = txtSearchUser;
    int totalrecords = 10;
    ArrayList Users = UserController.GetUsersByUserName(PortalId, getUsers + "%", 0, 10, ref totalrecords, true, IsSuperUser);
    return Users.Cast<UserInfo>().Select(u => new UserBindings { UserID = u.UserID, Username = u.Username, DisplayName = u.DisplayName }).ToList();
}

我必须转换Arraylist并使用Linq将UserInfo映射到UserBinding对象。现在这个方法将返回一个UserBinding列表,它比UserInfo对象的前一个ArrayList小得多。

答案 1 :(得分:0)

如果您只想限制显示的内容,还可以在GridView中定义要显示的列/属性。听起来你要让它为所有属性提供所有列。