2012-11-27 3 views
0

나는이처럼 보이는 RowDataBound 이벤트 핸들러를 핸들러는 다음과 같습니다.RowDataBound DropDownList로

Protected Sub GVHistoricNames_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GVClearcoreHistoricNames.RowUpdating 
    Try 
     Dim ddl As DropDownList = CType(GVHistoricNames.Rows(e.RowIndex).FindControl("ddlUsercode"), DropDownList) 
     SQLHistoricNames.UpdateParameters("UserCode").DefaultValue = ddl.SelectedValue 

    Catch ex As Exception 

    Finally 

    End Try 
End Sub 

RowUpdating 이벤트 핸들러 SelectedValue 속성의 값은 RowDataBound 이벤트 처리기가RowUpdating 이벤트 처리기 후에 이 호출되기 때문에 절대로 올바르지 않습니다. SelectedValue에 어떻게 액세스합니까? 업데이트 매개 변수로 설정하려고합니다.

답변

1

하나의 방법은 실제 요청 데이터를 조사하는 것일 수 있습니다. 예를 들어, GVHistoricNames_RowUpdating 코드에서 사용

Dim ddl As DropDownList = CType(GVHistoricNames.Rows(e.RowIndex).FindControl("ddlUsercode"), DropDownList) 
SQLHistoricNames.UpdateParameters("UserCode").DefaultValue = Request(ddl.UiniqueID) 

후 데이터를 컨트롤에로드되기 전에 제어 값이 필요할 때 나는 종종 작업 차선책을 사용 (또는 컨트롤을 추가 할 때/나중에 이벤트에 동적으로 바인딩) .

EDIT

ASP.NET은 HTML 요소 대응 name 속성을 나타내는 Control.UniqueId를 이용한다. 일반적으로 ControlID를 부모의 부모 컨테이너 (명명 컨테이너) 고유 ID에 추가하여 ClientID와 마찬가지로 ClientID를 생성하므로 그리드의 여러 드롭 다운 목록에 대해 서로 다른 고유 ID (및 클라이언트 ID)를 얻습니다.

생성 된 행에 목록 항목을로드하는 동안 디자인 타임 템플릿에 드롭 다운 목록을 만드는 것이 좋습니다. 그러나 행 생성 이벤트가 시작되기 전에 드롭 다운 목록이 이미 페이지 제어 트리에 추가되어 POST 이벤트가 이미 처리되었을 것입니다. 이 경우 드롭 다운 목록에 선택 항목을 설정하는 항목이 없습니다. 그러므로 문제.

+0

ddl.UIniqueID 란 무엇입니까? GridView의 모든 행에 대한 드롭 다운 목록이 있습니다. – w0051977

+0

많은 감사. 그 트릭을했습니다. 나는이 답변을 한 번 이상 upvote 할 수 있었으면 좋겠다! ASPX 파일에서 코드 대신 뒤에 드롭 다운 목록 항목을 선언하면 왜 위의 동작이 발생하지 않는지 설명 할 수 있습니까? – w0051977

+0

@ w0051977, 귀하의 의심에 대한 답변을 편집하십시오! BTW, 두 번 up-voting 대신 투표 화살표 아래에있는 체크 표시를 클릭하여 대답을 승인 된 것으로 표시 할 수 있습니다. – VinayC