ASP.NET 은 gridview 를 사용 하여 현재 줄 의 색인 값 을 가 져 옵 니 다.

GridView 컨트롤 을 사용 할 때 현재 줄 을 가 져 오 는 색인 을 자주 만 나 색인 을 통 해 많은 작업 을 합 니 다.예 를 들 어 현재 줄 의 컨트롤 요 소 를 얻 을 수 있 습 니 다.어떤 요소 의 값 을 설정 하 는 등.다음은 실례 를 결합 하여 GridView 의 현재 줄 인덱스 값 을 얻 는 몇 가지 방법 을 소개 합 니 다.
실례:
① 목적:GridView 에서 RowCommand 의 현재 색인 줄 을 가 져 옵 니 다.
② 프론트 페이지:GridView 에 모드 열 을 추가 하고 LinkButton 컨트롤 을 추가 합 니 다.
코드:

<asp:TemplateField HeaderText="  "> 
<ItemTemplate> 
<asp:LinkButton ID="lbtnQianRu" runat="server" CommandName="QianRu" 
CommandArgument='<%# Eval("Id") %>'>  </asp:LinkButton> 
<asp:LinkButton ID="lbtnQianChu " runat="server" CommandName="QianChu">   </asp:LinkButton> 
</ItemTemplate> 
</asp:TemplateField> 

알림:배경 코드 에서 e.CommandArgument 로 값 을 추출 하면 프론트 코드 는 단추 에 CommandArgument 의 값 을 설정 해 야 합 니 다.값 은 연 결 된 데이터베이스 필드 입 니 다.예:
//클 라 이언 트 에서 LinkButton 의 CommandArgument 와 메 인 키 Id 를 연결 하 였 기 때문에 여기 서 e.CommandArgument 로 메 인 키 ID 의 값 을 직접 얻 을 수 있 습 니 다.
int id = Convert.ToInt32(e.CommandArgument.ToString());
③ GridView 에 LinkButton 을 이벤트 처리 버튼 으로 설정 하여 다음 과 같은 방법 으로 색인 을 가 져 옵 니 다.

protected void gv_Company_RowCommand(object sender, GridViewCommandEventArgs e){ 
if (e.CommandName == "QianRu") 

{ 

[방법 1]

GridViewRow drv = ((GridViewRow)(((LinkButton)(e.CommandSource)).Parent.Parent)); //                  
inf id=Convert.ToInt32(GridView1.DataKeys[drv.RowIndex].Value); //      GridView            
메모:이 방법 을 사용 하려 면 GridView 의 DataKeyNames 속성 을 설정 해 야 합 니 다.이 경우 홈 키 필드 로 설정 합 니 다.
[방법 2]

GridViewRow drv = (GridViewRow)((LinkButton)e.CommandSource).NamingContainer;//                  
int id = Convert.ToInt32(GridView1.Rows[drv.RowIndex].Cells[0].Text); //      GridView           ,                ,drv.RowIndex          
} 
} 
현재 줄 의 색인 값 을 얻 을 수 있 는 방법 도 있다.
[방법 3]
링크 button 컨트롤 의 Command 이벤트 에서 sender 의 Parent 를 이용 하여 GridView 의 현재 줄 을 가 져 옵 니 다.

protected void lbtnQianChu_Command(object sender, CommandEventArgs e) 
{ 
LinkButton lb = (LinkButton)sender; 
DataControlFieldCell dcf = (DataControlFieldCell)lb.Parent; 
GridViewRow gvr = (GridViewRow)dcf.Parent; //                  
lbtnQianChu.SelectedIndex = gvr.RowIndex; 
} 

[방법 4]
링크 button 컨트롤 의 Click 이벤트 에서 GridView 의 현재 줄 을 가 져 옵 니 다.

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
//   
int row = ((GridViewRow)((LinkButton)sender).NamingContainer).RowIndex; 
} 

[방법 5]
템 플 릿 열 에 DropDownlList 컨트롤 을 추가 하고 AutoPostback 속성 을 열 면 DropDownlList 의 Selected IndexChanged 이벤트 에서 GridView 의 현재 줄 을 가 져 옵 니 다.
다음은 Selected IndexChanged 이벤트 의 코드 요약 입 니 다.

DropDownList ddl = (DropDownList)sender; 
GridViewRow gvr = (GridViewRow)ddl.NamingContainer; 
int id = int.Parse(GridView1.DataKeys[gvr.RowIndex][0].ToString()); 
int num = int.Parse(ddl.Text); 
첫 번 째 문장 은 이 벤트 를 촉발 하 는 DropDownlList 컨트롤 을 가 져 오 는 데 사 용 됩 니 다.
두 번 째 문장 은 이 컨트롤 의 Naming Container 속성 을 이용 하여 용기,즉 GridViewRow 대상 을 가 져 옵 니 다.
알림:DropDowList 는 button 과 다 르 기 때문에 CommandName 을 지정 할 수 없 기 때문에 NamingContainer 속성 으로 문 제 를 해결 합 니 다.
먼저 마이크로소프트 가 이 Naming Container 속성 에 대한 설명 을 살 펴 보 자.
서버 컨트롤 의 이름 용기 에 대한 인용 을 가 져 옵 니 다.이 인용 은 같은 Control.ID 속성 값 을 가 진 서버 컨트롤 을 구분 하기 위해 유일한 이름 공간 을 만 듭 니 다.
ASP.NET 웹 프로그램의 모든 페이지 에는 컨트롤 의 계층 구조 가 포함 되 어 있 습 니 다.이 계층 구 조 는 컨트롤 이 사용자 가 볼 수 있 는 UI 를 생 성 할 지 여부 와 무관 합 니 다.주어진 컨트롤 의 이름 용 기 는 계층 구조 에서 이 컨트롤 위의 부모 컨트롤 입 니 다.이 부모 컨트롤 은 INaming Container 인 터 페 이 스 를 실현 합 니 다.이 인 터 페 이 스 를 구현 하 는 서버 컨트롤 은 하위 서버 컨트롤 의 ID 속성 값 에 유일한 네 임 스페이스 를 만 듭 니 다.
목록 웹 서버 컨트롤(예 를 들 어 Repeater 와 DataList 서버 컨트롤)을 데이터 로 연결 할 때 서버 컨트롤 에 유일한 네 임 스페이스 를 만 드 는 것 이 특히 중요 합 니 다.데이터 원본 의 여러 항목 이 서버 컨트롤 을 만 드 는 여러 인 스 턴 스 이 고 이 서버 컨트롤 이 중복 컨트롤 의 하위 단계 일 때 이름 용 기 는 이 하위 컨트롤 의 모든 인 스 턴 스 가 충돌 하지 않 는 UniqueID 속성 값 을 확보 합 니 다.페이지 의 기본 이름 용 기 는 이 페이지 를 요청 할 때 생 성 된 페이지 클래스 의 인 스 턴 스 입 니 다.
이 속성 을 사용 하여 특정 서버 컨트롤 이 있 는 이름 용 기 를 확인 할 수 있 습 니 다.
[방법 6]
템 플 릿 열 에 CheckBox 컨트롤 이 있 는 경우 CheckBox 1 을 통 해CheckedChanged 이벤트 에서 GridView 의 현재 줄 을 가 져 옵 니 다.

CheckBox chk = (CheckBox)sender; 
DataControlFieldCell dcf = (DataControlFieldCell)chk.Parent; 
GridViewRow gvr = (GridViewRow)dcf.Parent; 
[방법 7]

<asp:GridView ID="gvTest" runat="server"> 
<Columns> 
<asp:TemplateField> 
<ItemTemplate> 
DisplayIndex : <%# Container.DisplayIndex %> || DataItemIndex : <%# Container.DataItemIndex %><br /> 
</ItemTemplate> 
</asp:TemplateField> 
</Columns> 
</asp:GridView> 
[방법 8]
컨트롤 의 ID 와 Name 이름 은 위의 방법 과 같 습 니 다.RowCommand()방법 을 통 해 선택 한 열 이 어떤 열 인지 판단 해 야 합 니 다.이 방법 을 사용 하려 면 e.CommandArgument 라 는 속성(GridView 에서 줄 색인 이 CommandArgument 에 있 는 지 먼저 알 아야 합 니 다)을 사용 해 야 합 니 다.현재 작업 은 이러한 속성 을 얻 는 것 입 니 다.자 료 를 찾 아 보면 GridView 컨트롤 의 모든 줄 을 만 들 때 RowCreated 사건 이 발생 한 다 는 것 을 알 수 있 습 니 다.이 방법 을 통 해 linkButton 이 선택 한 줄 번 호 를 CommandArgument 에 기록 할 수 있 습 니 다.

protected void gvInfo_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
LinkButton lk1 = (LinkButton)e.Row.FindControl("lkbtn");//LinkButton ID 
lk1.CommandArgument = e.Row.RowIndex.ToString(); 
} 
} 
protected void gvInfo_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
if (e.CommandName == "ADD")// LinkButton CommandName 
{ 
int index = Convert.ToInt32(e.CommandArgument); 
string aa = gvInfo.Rows[index].Cells[1].Text.ToString();//           ,   0   
} 
} 

이상 에서 말 한 것 이 바로 본문의 전체 내용 이 니 여러분 들 이 좋아 하 시 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기