ASP.NET C# Добавить/обновить роль пользователя

Привет всем У меня есть страница, которая показывает информацию о размещении, а затем идентификатор пользователя, который создал эту информацию в DetailsView.

У меня также есть кнопка, которая должна смотреть на этот UserID и при нажатии на этот userID преобразовывать его в имя пользователя, чтобы затем я мог использовать это имя пользователя для изменения роли человека на арендатора. Однако я не уверен, используя С#, как я могу получить идентификатор пользователя из подробного представления, выполнить преобразование и обновить роль. Любые идеи?

Отметка

@Тим

Вот код, который я добавил:

public partial class adminonly_approval : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    void DetailsView1_ItemCommand(Object sender, DetailsViewCommandEventArgs e){
    if (e.CommandName == "SetToRenter")
    {
        // if UserID is in second row:
        DetailsViewRow row = DetailsView1.Rows[9];

        // Get the Username from the appropriate cell.
        // In this example, the Username is in the second cell  
        String UserID = row.Cells[9].Text;
        MembershipUser memUser = Membership.GetUser(UserID);
        Roles.AddUserToRole(memUser.UserName, "renter");
    }
}

Я добавил кнопку на странице под представлением сведений и установил для параметра commandName значение SetToRenter. Когда я нажимаю кнопку, она не меняет роли. Я новичок в ASP и C#, но мне нужна эта функция для работы в университете. Есть идеи?


person Mark    schedule 04.04.2011    source источник


Ответы (1)


Membership.GetUser(UserId)

MembershipUser memUser = Membership.GetUser(UserId);
Roles.AddUserToRole(memUser.UserName, "Renter");

Roles.AddUserToRole

Вот пример того, как получить значения BoundFields вашего DetailsView: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.detailsview.itemcommand.aspx

Вы должны установить для кнопки CommandName ее функцию и обработать событие DetailsView.ItemCommand в отделенном коде. Там вы можете получить свой UserID следующим образом:

void DetailsView1_ItemCommand(Object sender, DetailsViewCommandEventArgs e){
    if (e.CommandName == "SetToRenter")
    {
        // if UserID is in second row:
        DetailsViewRow row = DetailsView1.Rows[1];

        // Get the Username from the appropriate cell.
        // In this example, the Username is in the second cell  
        String UserID = row.Cells[1].Text;
        MembershipUser memUser = Membership.GetUser(UserId);
        Roles.AddUserToRole(memUser.UserName, "Renter");
    }
}

Как упоминал Cem, вы должны установить DetailsView Свойство DataKey. Затем вы также можете получить PK текущей записи следующим образом:

// Get the ArrayList objects that represent the key fields
ArrayList keys = (ArrayList)(DetailsView1.DataKey.Values).Keys;
// Get the key field for the current record. 
String UserID = keys[0].ToString();

Еще проще ярлык SelectedValue в представлении сведений:

String UserID= DetailsView1.SelectedValue.ToString();
person Tim Schmelter    schedule 04.04.2011
comment
Привет, Тим, спасибо за ответ, я вижу, что получает текущий UsersID, а не один в поле UserID в подробном представлении. Есть идеи, как мне это сделать? - person Mark; 05.04.2011
comment
@Mark: это не получает идентификатор пользователя текущего пользователя. Он просто показывает, как добавить пользователя в роль, когда у вас есть UserID. Вы должны показать нам какой-нибудь код или рассказать нам о проблемах, с которыми вы столкнулись, чтобы получить UserID. - person Tim Schmelter; 05.04.2011
comment
Также работает DataKey. Я имею в виду, что вам не нужно искать ячейку UserID в DetailsView. msdn.microsoft.com/en- мы/библиотека/ - person cem; 05.04.2011
comment
@Tim Я добавил код в свой исходный пост, который я добавил, и у меня возникли некоторые проблемы. Я вижу этот другой код, который вы добавили после того, как cem упомянул об этом, но вы говорите, что он получает PK, но в данном случае это Accom_ID, а не UserID. - person Mark; 05.04.2011
comment
@Mark: вы всегда можете использовать мой первый метод, который вы скопировали в свой вопрос. Но вы не упомянули, какие у вас проблемы. Я сомневаюсь, что на самом деле это 10-я ячейка в 10-й строке вашего подробного представления. Я бы предположил, что это 10-я строка, но вторая ячейка. String UserID = row.Cells[1].Text; - person Tim Schmelter; 05.04.2011
comment
@Mark: почти забыли - вам не нужно добавлять CommandName к вашей кнопке, если кнопка не является частью DetailsView. Вы должны просто обработать событие Button-Click. - person Tim Schmelter; 05.04.2011