문제

객체 목록을 GridView의 데이터 소스로 사용하고 있으며 열을 표시하지 않도록 설정하면 해당 열의 값이 NULL로 변경되므로 업데이트가 실패합니다 (열에는 NULLS가 허용되지 않음). 열이 표시 될 때 값이 존재하지만 실제로이 열을 표시하고 싶지는 않습니다. 대부분은 사용자가 실제로 볼 필요가없는 ID 열이기 때문입니다.

편집 : 숨겨진 필드 옵션을 시도했지만 여전히 값을 NULL로 설정합니다. 나는 페이지 소스를 보았고 숨겨진 필드는 적절한 값으로 존재합니다 ...

도움이 되었습니까?

해결책

.NET 2.0에서 숨겨진 열을 시뮬레이션하는이 솔루션을 찾았습니다.

gridview.rowcreated 이벤트를 구현하십시오.

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
    e.Row.Cells[1].Visible = false;
    e.Row.Cells[2].Visible = false;
}

다음은 링크입니다. http://www.beansoftware.com/asp.net-tutorials/gridview-hidden-column.aspx

열이 표시되지 않은 경우 2.0에서 해당 열에 대한 데이터 바인딩이 실패하지만 링크가 설정된 후이 메소드가 숨어 시스템을 속입니다 (?).

다른 팁

Microsoft는 DatakeyNames 속성을 사용하는 것이 좋습니다 그리드 뷰 컨트롤의.

Code-Behind를 사용하여 특정 열을 숨기는 대신 gridview에서 바운드 필드를 제거하고 DatakeyEnames 속성에 지정할 수 있습니다.

<asp:GridView ID="GridView1" runat="server" 
        DataKeyNames="SalesOrderID,SalesOrderDetailID"
        DataSourceID="LinqDataSource1">

이런 식으로 필드는 사용자에게 표시되지 않지만 GridView는 업데이트 등의 값을 유지하는 것을 알고 있습니다.

아직 그렇게하지 않으면 데이터에 템플릿 열을 사용하고 "수동"데이터 바인딩 ( "인라인"또는 RowDatabound 이벤트를 사용하여 페이지 뒤의 코드에서)을 수행하는 것이 좋습니다. 이렇게하면 DBNULL을 테스트하고 값이 NULL 인 경우 열에 값을 넣는 것을 무시할 수 있습니다. 또한 열을 제대로 숨길 수 있습니다.

표시하고 싶지 않은 값에 대해 숨겨진 필드로 수행 할 수 있습니다. 이렇게하면 오늘날과 동일한 데이터베이닝 및 기타 기능을 사용할 수 있습니다.

GridView 내부의 필드가 보이지 않게되면 셀 값이 더 접근 할 수 없거나 널 또는 비어 있습니다.

이 문제를 해결하려면 GridView의 DatakeyNames 속성에 열 이름 (숨겨진 필드)을 할당하면됩니다. DataKeyNames="colName1,colName2,colName3".

그런 다음 셀 값에 액세스하십시오 cellValue = GridView1.DataKeys[0]["ID"].ToString();

나는 당신의 문제에 대한 해결책을 보여주는 간단한 게시물을 작성했습니다. 여기.

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