2010-07-05 2 views
2

사용자 목록과 역할이 표시된 repeater가 있습니다. 이 역할을 chnage 수있는 드롭 다운 목록도 있습니다 아래repeater 내의 드롭 다운 목록에서 users 역할을 업데이트하십시오.

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

변경 이벤트의 작품을 볼 수 있지만 사용자가 업데이트 할 수 있도록 내가 필요한 것은 행의 ID입니다.

답변

1

그것은 여전히 ​​클라이언트의 사용자 ID를 노출하지만이 당신을 얻어야한다 :

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

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

를 그리고 서버 이벤트

0

하나의 옵션은 내장 된 편집 기능을 사용하여 GridView에서이를 수행하는 것입니다. 일반적으로 GridView 컨트롤을 제안하지는 않겠지 만 입력 한 마크 업에서 테이블을 렌더링하는 것이 분명하기 때문에 여기서 수행합니다.

또 다른 옵션은 Javascript를 통해 행 값을 선택하여 AJAX 호출로 수행하는 것입니다. 이것은 어쨌든 전체 포스트 백보다 약간 나은 성능을 보일 수 있습니다.

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); 
} 
관련 문제