페이지에로드되고 다른 GridViews에 대한 중첩 역할을하는 GridView 컨트롤이 있습니다. 각 자식 GridView에는 동일한 열과 데이터 유형이 포함되어 있으므로 사용자가 LinkButton을 클릭하여 지정된 정렬 식으로 각 GridView를 정렬 할 수있게하려고합니다. 여기 제가 지금까지 가지고있는 코드는 작동하지 않습니다. 그냥 PostBack으로 이동하지만 같은 순서로 데이터를 반환합니다.ASP.NET 컬렉션의 각 Gridview 정렬
foreach (Control c in Page.Controls)
{
if (c.ID == "dgvResults")
{
GridView s = (GridView)c;
DataTable dataTable = s.DataSource as DataTable;
if (dataTable != null)
{
DataView dataView = new DataView(dataTable);
dataView.Sort = "OEN ASC";
s.DataSource = dataView;
s.DataBind();
}
}
}
편집 1 : 나는 데이터 소스가 더 이상 다시 게시에 바인딩 것을 발견, 그래서 내가 세션 변수에 DataTable을로의 GridView 데이터 소스를 저장해야합니다. 이제는 그 일을 할 수 없습니다.
편집 2 : 내 자식 GridViews의 DataBinding 및 DataBound 이벤트에 Gridview.DataSource를 저장하려고 시도했지만 어느 경우에도 저장되지 않습니다. 위 코드에서 다시 호출하려고하면 Datatable을 포함해야하는 세션 변수가 존재하지 않습니다. 여기
내가 DataTable을 저장하기 위해 넣어 한 코드입니다 :// The variable 's' represents the GridView control that triggered the DataBinding event
Session["dtResults"] = s.DataSource as DataTable;
// The code below is how I call the Session variable that I set earlier in the DataBinding event
if (Session["dtResults"] != null)
{
DataTable dataTable = (DataTable)Session["dtResults"];
...
}
gridview에 대해 'viewstate'를 활성화하고 시도 했습니까? –
ViewState가 이미 활성화되어 있고 ViewState [] 변수에 데이터 테이블을 저장하려고했습니다. GridView 중첩을 버리고 단일 GridView 컨트롤에 저장된 데이터를 그룹화하는 경로를 따라야 할 수도 있습니다. – JJT