코드 뒤에서 채워진 두 개의 gridview에 문제가 있습니다. 채우기 및 GridView1 자체 databind 잘 작동합니다. 그런 다음 GridView2를 채우고 바인딩하는 코드를 추가했지만 GridView1은 완전히 사라졌습니다. GridView2.DataBind()를 주석 처리하면 GridView1이 다시 나타납니다. 나는 무슨 일이 일어나고 있는지 해결할 수 없습니다.코드에서 두 번째 GridView를 바인딩 할 때 첫 번째 GridView가 사라집니다.
Incidentaly DropDownList 또는 CheckBoxList에 대해 GridView2를 변경하면 동일한 문제가 발생하지만 ListBox에 대해 GridView1을 변경하면 GridView1이 나타납니다.
protected void Page_Load(object sender, EventArgs e)
{
Int32 chaID = 20;
Int32 slots = 14;
String ConnectionString = WebConfigurationManager.ConnectionStrings["horizonConnectionString"].ToString();
String selectSQL = "SELECT chassis.ChassisName, srv.ChassisPosition, srv.ServerName, srv.ChassisID, srv.LocationID, chassis.LocationID AS ChaLocationID FROM srv INNER JOIN chassis ON srv.ChassisID = chassis.ChassisID WHERE (srv.ChassisID = '" + chaID + "') ORDER BY chassis.ChassisName, srv.ChassisPosition";
SqlConnection con = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand(selectSQL, con);
DataTable dt2 = new DataTable();
DataView dv = new DataView();
try
{
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(selectSQL, con);
sda.Fill(dt2);
dv = dt2.DefaultView;
}
catch (Exception)
{
}
try
{
int searchIndex;
dv.Sort = "ChassisPosition";
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Bay", typeof(Int32)));
dt.Columns.Add(new DataColumn("Server", typeof(String)));
for (int i = 0; i <= slots - 1; i++)
{
DataRow dr = dt.NewRow();
dr[0] = i + 1;
searchIndex = dv.Find(i + 1);
if (searchIndex != -1)
{
dr[1] = dv[searchIndex][2].ToString();
}
else
{
dr[1] = "-----";
}
dt.Rows.Add(dr);
}
this.GridView1.DataSource = dt;
GridView1.DataBind();
}
catch (Exception)
{
}
ConnectionString = WebConfigurationManager.ConnectionStrings["horizonConnectionString"].ToString();
selectSQL = "SELECT [ServerName], [ServerID], [FarmName], [LMG] FROM [srv] ORDER BY [ServerName]";
con = new SqlConnection(ConnectionString);
cmd = new SqlCommand(selectSQL, con);
DataTable dt3 = new DataTable();
try
{
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(selectSQL, con);
sda.Fill(dt3);
this.GridView2.DataSource = dt3;
GridView2.DataBind();
}
catch (Exception)
{
}
}
일부 컨트롤을 바인딩하면 레이아웃 문제가 있음을 나타내는 이유가 없습니다. 질문을 편집하고 aspx 파일에서 마크 업을 추가하는 것이 좋습니다. 그리드 2에 데이터가 있고 그리하여 크기가있을 때 그리드 1을 덮고 있거나 그렇지 않아야 할 가능성이 있습니다. – slugster
페이지로드 이벤트에 중단 점을 넣고 데이터 소스 (GV1 및 GV2의 데이터 테이블)를 추적하고 데이터가 비어 있거나 데이터가 있는지 또는 일부 오류가 발생하고 예외가 발생하지만 사용자가 'try 그리고 그것을 잡을 수 없다. –