가시가 아닌 데이터를 사용하여 GridView에서 행을 삭제하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/205278

  •  03-07-2019
  •  | 
  •  

문제

SQLServer 데이터 소스에 직접 연결되지 않고 기능을 통해 채워진 그리드 뷰를 사용하여 간단한 프로토 타입 프론트 엔드를 작성하고 있습니다.

그래서 그리드/기본 데이터베이스에서 행/레코드를 삭제할 수 있습니다.

  1. AutogeneratedEleteButton = true 설정
  2. 첫 번째 열에 고유 한 레코드 ID를 표시합니다
  3. 행 방화 행사 처리
  4. grid.rows [e.rowindex] .cells [idindex] .text를 가져 와서 ID를 얻습니다.
  5. 해당 숫자를 삭제하는 기능으로 전달합니다.

이것은 잘 작동하는 것처럼 보이지만 사용자에게 ID를 표시하지는 않겠습니다.

ID 열의 가시 속성을 False로 설정하려고 시도했지만 위 4 단계가 빈 문자열을 반환했습니다. 따라서 레코드가 삭제되지 않았습니다.

그렇다면 각 행에 숨겨진 ID 번호를 어떻게 저장합니까?

아니면 내가 이것에 대해 완전히 잘못된 방식으로 가고 있습니까?

답변에 대한 후속 :

두 답변에 감사드립니다. 결국 Eric의 DatakeyNames 방식으로 진행되었습니다. 나처럼 ASP.net을 처음 접하는 다른 사람들에게는 내가 사용한 단계

  • 그리드 데이터 소스를 설정하고 DataBind () 호출 된 라인 사이에 추가

    grid.DataKeyNames = new string[] {"id"};

  • 그런 다음 Rowdeleting을 처리하는 기능에서 사용을 사용하여 내 ID를 보유했습니다.

    grid.DataKeys[e.RowIndex].Value

도움이 되었습니까?

해결책

GridView에는 DatakeyEnames 속성이 있습니다. 데이터 소스를 그리드에 바인딩하면 DatakeyEnames (일반적으로 하나의 이름 만 PK 필드)를 설정합니다. PK를 표시하지는 않지만 Code-Behind에서 PK를 얻을 수 있습니다.

다른 팁

표시 = 거짓 수단은 페이지에 렌더링되지 않습니다. 당신이 원하는 것은 템플릿 필드를 만들고 숨겨진 필드를 사용하여 값을 유지하거나 컨트롤에서 스타일을 "display : none;"으로 설정하는 것입니다. 클라이언트 측 코드가 AJAX 호출 값에 대한 액세스가 필요한 경우입니다.

그렇지 않으면 @eric z beard가 제안한대로 datakeyynames 속성을 사용하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top