그리드 보기 행 명령에서 데이터 키 값 가져오기
나는 있습니다GridView
관계자와DataKey
항목 ID입니다.내부에서 해당 값을 검색하려면 어떻게 해야 합니까?RowCommand
이벤트?
이게 효과가 있는 것 같지만 출연진들이 하는 건 싫습니다.LinkButton
(만약 다른 명령이 이벤트를 실행하고 있다면?) 그리고 나는 그것에 대해 너무 자신이 없습니다.NamingContainer
조금.
LinkButton lb = (LinkButton)e.CommandSource;
GridViewRow gvr = (GridViewRow)lb.NamingContainer;
int id = (int)grid.DataKeys[gvr.RowIndex].Value;
제가 대신 그 신분증을 전달할 수 있다는 것을 알고 있습니다.CommandArgument
하지만 저는 사용하기로 결정했습니다.DataKey
제게 더 많은 유연성을 주기 위해.
ID에 숨겨진 필드를 사용할 수 있다는 것도 알고 있지만, 사용하고 싶지 않은 해킹이라고 생각합니다.
보통 CommandArgument를 통해 RowIndex를 전달하고 원하는 DataKey 값을 검색하는 데 사용합니다.
버튼에서:
CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>'
서버 이벤트
int rowIndex = int.Parse(e.CommandArgument.ToString());
string val = (string)this.grid.DataKeys[rowIndex]["myKey"];
다음 코드를 사용하여 데이터 키 값을 얻을 수 있었습니다.
그리드 보기에서 다음을 추가했습니다.
DataKeyNames="ID" OnRowCommand="myRowCommand"
그러면 내 행에서 명령 기능:
protected void myRowCommand(object sender, GridViewCommandEventArgs e)
{
LinkButton lnkBtn = (LinkButton)e.CommandSource; // the button
GridViewRow myRow = (GridViewRow)lnkBtn.Parent.Parent; // the row
GridView myGrid = (GridView)sender; // the gridview
string ID = myGrid.DataKeys[myRow.RowIndex].Value.ToString(); // value of the datakey
switch (e.CommandName)
{
case "cmd1":
// do something using the ID
break;
case "cmd2":
// do something else using the ID
break;
}
}
foreach (GridViewRow gvr in gvMyGridView.Rows)
{
string PrimaryKey = gvMyGridView.DataKeys[gvr.RowIndex].Values[0].ToString();
}
다음을 반복하는 동안 이 코드를 사용할 수 있습니다.foreach
또는 다음과 같은 GridView 이벤트의 경우OnRowDataBound
.
여기서 다음에 대한 여러 값을 입력할 수 있습니다.DataKeyNames
쉼표로 구분하여 사용합니다.,
.예를들면,DataKeyNames="ProductID,ItemID,OrderID"
.
이제 다음 항목에 액세스할 수 있습니다.DataKeys
아래와 같은 인덱스를 제공합니다.
string ProductID = gvMyGridView.DataKeys[gvr.RowIndex].Values[0].ToString();
string ItemID = gvMyGridView.DataKeys[gvr.RowIndex].Values[1].ToString();
string OrderID = gvMyGridView.DataKeys[gvr.RowIndex].Values[2].ToString();
인덱스 대신 키 이름을 사용하여 다음에서 값을 가져올 수도 있습니다.DataKeyNames
아래와 같은 컬렉션:
string ProductID = gvMyGridView.DataKeys[gvr.RowIndex].Values["ProductID"].ToString();
string ItemID = gvMyGridView.DataKeys[gvr.RowIndex].Values["ItemID"].ToString();
string OrderID = gvMyGridView.DataKeys[gvr.RowIndex].Values["OrderID"].ToString();
이렇게 하면 됩니다.
string id = GridName.DataKeys[Convert.ToInt32(e.CommandArgument)].Value.ToString();
버튼에서:
CommandArgument='<%# Eval("myKey")%>'
서버 이벤트
e.CommandArgument
언급URL : https://stackoverflow.com/questions/2818203/get-datakey-values-in-gridview-rowcommand
'source' 카테고리의 다른 글
MySQL의 쿼리에서 반환된 각 행에 대한 쿼리 호출 (0) | 2023.08.27 |
---|---|
Spring MVC의 Ajax 요청에서 세션 시간 초과 탐지 (0) | 2023.08.27 |
Ajax 내부의 Javascript 변수에 액세스 성공 (0) | 2023.08.27 |
url 매개 변수를 javascript/jquery로 대체하는 방법은 무엇입니까? (0) | 2023.08.27 |
git 기록에서 병합 커밋 제거 (0) | 2023.08.27 |