2010-07-05 2 views
2

J'ai un répéteur qui affiche une liste d'utilisateurs et leurs rôles. Il y a aussi une liste déroulante chnage voir ci-dessous il y a le rôlemettre à jour un rôle d'utilisateur à partir d'une liste déroulante dans un répéteur

<td><asp:DropDownList ID="ddlChangeType" class="controlwidth100" runat="server" AutoPostBack="true" OnSelectedIndexChanged="change" /></td> 

les œuvres d'événements de changement, mais ce que je dois à l'ID de la ligne afin que l'utilisateur peut être mis à jour.

Répondre

1

Il expose encore l'ID utilisateur sur le client, mais cela devrait vous arriver:

<td><asp:DropDownList ID="ddlChangeType" class="controlwidth100" runat="server" AutoPostBack="true" OnSelectedIndexChanged="change" UserID=<%#Eval("UserID") %> /></td> 

Et pour l'événement du serveur:

Protected Sub change(ByVal sender As Object, ByVal e As EventArgs) 
    Response.Write(DirectCast(sender, DropDownList).Attributes("UserID")) 
End Sub 
0

Une option consiste à le faire dans un GridView, en utilisant ses capacités d'édition intégrées. Normalement, je ne suggérerais pas le contrôle GridView, mais je le fais ici parce que du balisage que vous avez entré il est clair que vous êtes en train de rendre une table de toute façon.

Une autre option serait de le faire comme un appel AJAX, ramasser la valeur de la ligne via Javascript. Cela pourrait fonctionner un peu mieux qu'une publication complète de toute façon.

0
<td> 
    <asp:DropDownList ID="ddlChangeType" class="controlwidth100" 
     runat="server" AutoPostBack="true" OnSelectedIndexChanged="change" /> 
    <asp:HiddenField ID="RoleIdValue" runat="server" 
     Value='<$# Databinder.Eval(Container.DataItem, "UserId") %>' /> 
     //Set the userId here so you can access it from code 
</td> 

protected void change(object sender, EventArgs e) { 
    DropDownList ddlChangeType = (DropDownList)sender; 
    HiddenField RoleIdValue = 
     (HiddenField)ddlChangeType.Parent.FindControl("RoleIdValue"); 

    string? userId = RoleIdValue.Value; 
    string? roleId = ddlChangeType.SelectedValue; 
    SomeDS.Update(userId, roleId); 
} 
Questions connexes