2011-10-07 3 views
3

레코드 업데이트를 지원하는 gridview가 있습니다. 텍스트 상자를 대체하는 드롭 다운 목록 (ddl)이있는 편집 템플릿이 있습니다. DDL은 데이터 소스에 바인딩되어 있으므로이 필드의 현재 값을 DDL에 추가해야합니다. 이를 통해 사용자는 DDL의 다른 값과 현재 값을 선택할 수 있습니다.ASP.NET Gridview 바인딩 전에 템플릿 컨트롤 편집에 값 추가

문제는 DDL이 바인딩되어야한다는 것입니다 ('< % # Bind ("Element") %>'). 업데이트 기능이 작동하지만 필드의 현재 값이 바인딩 된 후에 바인드해야합니다. 현재 RowDataBound 이벤트 중에 발생하는 DDL에 추가됩니다.

간단히 말해서; Bind 전에 내 DDL에 추가 된 필드의 현재 값을 가져와서 내 업데이트가 작동해야합니다 (그렇지 않으면 DDL에 vale 오류가 없음). Binding이 일어나기 전에 배관을 할 수 있도록 gridview에서 필드의 값을 가져올 수있는 가장 초기 포인트/이벤트는 무엇입니까 (편집 버튼을 클릭 한 후)?

도움 말?

답변

0

흥미로운 질문입니다! RowEditing 이벤트를 처리 할 수 ​​있습니다.이 이벤트는 행이 "편집 모드"(편집 버튼을 클릭 할 때)로 들어가면 시작됩니다. 그런 다음 NewEditIndex 속성을 사용하여 수정하려는 행을 찾으십시오.

그래서, 뒤에 코드에서이 같은 :

protected void myGridView_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    // the row you're editing 
    int rowToEdit = e.NewEditIndex; 

    // The numeric ordinal of your column where your DropDownList is. I just picked 5 at random 
    int ddlColumnIndex = 5; 

    // Get the DropDownList you're interested in modifying 
    DropDownList myDDL = (DropDownList)myGridView.Rows[rowToEdit].Cells[ddlColumnIndex].FindControl("myDDL"); 

    // Do whatever processing you need to do here 
} 
+0

감사합니다! 그 트릭을 했어! – user937036

+0

@ User937036 : 기꺼이 도와 드리겠습니다 =)이 답변 옆에있는 빈 "체크 표시"를 클릭하여 문제가 해결되었음을 나타냅니다. 여기에서 어떻게 작동하는지 볼 수 있습니다 : [답변 수락] (http : // meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235) – jadarnel27

관련 문제