2012-03-27 6 views
0

gridview에서 셀 값을 가져 오려고했지만 몇 가지 문제가 있습니다. 이 코드는 example과 유사하지만 서버 측에 버튼 필드를 추가한다는 점만 다릅니다. 어떤 이유로 RowCommand가 셀 값을 클릭 할 때 두 번 실행됩니까? TIA는 어떤 도움을RowCommand의 Gridview 셀 값

페이지로드는 비어 : code

protected void Page_Load(object sender, EventArgs e) 
{ 

} 

추가 버튼 필드 :

foreach (DataColumn col in transposedTable.Columns) 
    { 

     ButtonField bfield = new ButtonField(); 



     bfield.DataTextField = col.ColumnName; 

     bfield.HeaderText = col.ColumnName; 

     bfield.CommandName = "ColumnClick"; 

     gvTest.Columns.Add(bfield); 

    } 

RowDataBound 및 RowCommand 이벤트 code

위의 예 링크와 동일합니다
+0

코드 샘플을 게시 할 수 있습니까? – mellamokb

답변

1

확인 ... ... 해결 방법 탭에 게시 된 몇 가지 해결 방법이있는 것처럼 GridView RowCommad Event Firing Twice

것 같다 ... MSFT에서 열린 버그가 연결이 도움이

희망 ... 수

+0

아이디어 주셔서 감사합니다 - 해결 방법은 유망하지 않습니다 ..... – Blake

+0

중복 된 포스트 백이 내 변수를 지우지 않도록 세션 변수를 사용했습니다. 호기심이 강한 솔루션이지만 작동하는 유일한 방법입니다. 언제나처럼, 모든 도움을 주셔서 감사합니다! – Blake

0

표에서 행 값에 액세스하는 한 가지 방법은 셀 coll 그리드의 현재 인덱스 (당신이있는 EventArgs를 통해 액세스 할 수있는)과 함께 ection은 또한 아래의 FindControl을 사용 할 수 있습니다

void YOUR_GRID_EVENT(Object sender, GridViewDeleteEventArgs e) 
{ 
    Grid.Rows[e.RowIndex].Cells[0]; 
} 

아래와 같이 :이 도움이

var txtName = e.Row.FindControl("txtName") as TextBox; 

희망을 ...

업데이트

또한 당신이의 GridView의 데이터 바인딩() 메소드 A를 호출되어 있는지 확인하기 위해 코드를 확인 왜냐하면 ... 왜냐하면 당신이 GridView.DataBind()를 호출 할 때마다 ... 그리드 뷰의 rowcommand 이벤트가 호출되기 때문입니다 ... 저는 여러분이 현재 onload에서 gridView.DataBind()를 가지고 있다고 추측합니다 (추측). 버튼 클릭 이벤트 .. 그래서 두 번 호출되는 rowcommand 이벤트가 발생할 수 있습니다 ... 그렇다면 우리가 더 많은 것을 탐험 할 수 있도록 일부 코드를 게시하십시오 ...

+0

감사합니다. 데이터를 가져 오는 방법을 이해하지만 궁금한 점은 왜 이벤트가 두 번 발생 했습니까? – Blake

+0

@BlakeAdams 오 grid.DataBind() 메서드를 두 번 호출하지 않도록 한 번 이상 호출 된 grid.DataBind() 코드가 발생하면 이런 일이 ... 페이지 흐름을 두 번 ... 디버깅은 가장 친한 친구는 여기에 ... – NiK

+0

@BlakeAdams ps 내 대답 업데이트 ... – NiK

1

이것은 알려진 버그입니다. 나는 똑같은 문제가 있었다.

나는 이벤트 선언 뒤에 코드에서 핸들을 GridView.RowCommand 제거하고 는 .aspx 소스 그리드의 속성 선언이 줄을 추가 :

OnRowCommand="GridView_RowCommand" 

완벽하게 일했다.