select 쿼리와 gridview에 연결된 DDL이 포함 된 ASP 페이지가 있습니다. pageLoad
후에 값을 선택하고 gridview를 아무 문제없이 채울 수 있습니다.ASP 포스트 백이 모든 컨트롤을 게시하지 않았습니다.
<asp:DropDownList ID="DropDownList3" runat="server" OnSelectedIndexChanged="DropDownList3_SelectedIndexChanged" AutoPostBack="True">
<asp:ListItem>Select an entry</asp:ListItem>
<asp:ListItem>Requested</asp:ListItem>
<asp:ListItem>Requested and Closed</asp:ListItem>
<asp:ListItem>Ordered</asp:ListItem>
<asp:ListItem>Working</asp:ListItem>
<asp:ListItem>Warranty Parts</asp:ListItem>
<asp:ListItem>Warranty Service</asp:ListItem>
<asp:ListItem>Filled</asp:ListItem>
</asp:DropDownList>
protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e)
{
//string choice = DropDownList3.SelectedItem.Text;
int index = DropDownList3.SelectedIndex;
string query;
switch (index)
{
case 0:
{
query = "SELECT TOP 100 [last_name], [zpart_used_manual], [zpart_used_SN], [serial_number], [ref_num], [status], [summary], [id], [zpart_used_completed] FROM [VIEW_USS_ICG_Parts_Requested] ORDER BY [last_name]";
break;
}
case 1:
{
query = "SELECT TOP 100 [last_name], [zpart_used_manual], [zpart_used_SN], [serial_number], [ref_num], [status], [summary], [id], [zpart_used_completed] FROM [VIEW_USS_ICG_Parts_Requested] WHERE [status]='WAIT-PR' ORDER BY [last_name]";
break;
}
case 2:
{
query = "SELECT [last_name], [zpart_used_manual], [zpart_used_SN], [serial_number], [ref_num], [status], [summary], [id], [zpart_used_completed] FROM [VIEW_USS_ICG_Parts_Requested] WHERE ([zpart_used_completed] IS NULL) AND ([status]='WAIT-PR' OR [status]='CLO') ORDER BY [last_name]";
break;
}
case 3:
{
query = "SELECT TOP 100 [last_name], [zpart_used_manual], [zpart_used_SN], [serial_number], [ref_num], [status], [summary], [id], [zpart_used_completed] FROM [VIEW_USS_ICG_Parts_Requested] WHERE [status]='WAIT-PO' ORDER BY [last_name]";
break;
}
case 4:
{
query = "SELECT TOP 100 [last_name], [zpart_used_manual], [zpart_used_SN], [serial_number], [ref_num], [status], [summary], [id], [zpart_used_completed] FROM [VIEW_USS_ICG_Parts_Requested] WHERE [status]='WORK' ORDER BY [last_name]";
break;
}
case 5:
{
query = "SELECT TOP 100 [last_name], [zpart_used_manual], [zpart_used_SN], [serial_number], [ref_num], [status], [summary], [id], [zpart_used_completed] FROM [VIEW_USS_ICG_Parts_Requested] WHERE [status]='WAIT - WP' OR [status]='WAIT-W' ORDER BY [last_name]";
break;
}
case 6:
{
query = "SELECT [last_name], [zpart_used_manual], [zpart_used_SN], [serial_number] , [ref_num], [status], [summary], [id], (SELECT [DDvalue] FROM zpartStatuses WHERE [code] = [zpart_used_completed]) AS [zpart_used_completed] FROM View_USS_ICG_Parts_Requested INNER JOIN zpartStatuses ON [zpart_used_completed] = zpartStatuses.code WHERE ([status] = 'WAIT - WS')ORDER BY [last_name]";
break;
}
case 7:
{
query = "SELECT [last_name], [zpart_used_manual], [zpart_used_SN], [serial_number], [ref_num], [status], [summary], [id], [zpart_used_completed] FROM [VIEW_USS_ICG_Parts_Requested] WHERE [zpart_used_completed] = '1' ORDER BY [last_name]";
//query = "SELECT TOP 100 [last_name], [zpart_used_manual], [zpart_used_SN], [serial_number], [ref_num], [status], [summary], [id], [zpart_used_completed] FROM [VIEW_USS_ICG_Parts_Requested] ORDER BY [last_name]";
break;
}
default:
{
query = "SELECT TOP 100 [last_name], [zpart_used_manual], [zpart_used_SN], [serial_number], [ref_num], [status], [summary], [id], [zpart_used_completed] FROM [VIEW_USS_ICG_Parts_Requested] ORDER BY [last_name]";
break;
}
}
SqlConnection sqlConnection = new SqlConnection(@"Data Source=XXX.XXX.XXX.XXX;Initial Catalog=mdb;Persist Security Info=True;User ID=user;Password=pass");
SqlCommand sqlCommand = new SqlCommand(query, sqlConnection);
sqlConnection.Open();
SqlDataReader reader = sqlCommand.ExecuteReader();
GridView1.DataSource = reader;
GridView1.DataBind();
}
gridview 내에서 해당 행에 대한 업데이트 쿼리를 트리거하는 다른 DDL을 포함하는 항목 템플릿이 있습니다.
<asp:DropDownList ID="DropDownList4" runat="server" DataSourceID="SqlDataSource1"
DataTextField="DDvalue" DataValueField="code" Height="20px" Width="150px"
AutoPostBack="True" CommandName="DD4" OnSelectedIndexChanged = "DDL4_SelectedIndexChanged">
</asp:DropDownList>
protected void DDL4_SelectedIndexChanged(object sender, EventArgs e)
{
string sqlQueryString2 = "UPDATE [act_log] SET [zpart_used_completed]= @status, [zpart_used_status] = @date WHERE [id] = @id";
SqlConnection sqlConnectionCmdString2 = new SqlConnection(@"Data Source=XXX.XXX.XXX.XXX;Initial Catalog=mdb;Persist Security Info=True;User ID=user;Password=pass");
int status;
GridViewRow gr = (GridViewRow)((DataControlFieldCell)((DropDownList)sender).Parent).Parent;
DropDownList d4 = (DropDownList)gr.FindControl("DropDownList4");
status = d4.SelectedIndex;
string id = GridView1.Rows[gr.RowIndex].Cells[10].Text;
sqlConnectionCmdString2.Open();
SqlCommand sqlQueryCmd2 = new SqlCommand(sqlQueryString2, sqlConnectionCmdString2);
sqlQueryCmd2.Parameters.Add("@id", id);
sqlQueryCmd2.Parameters.Add("@status", status);
sqlQueryCmd2.Parameters.Add("@date", DateTime.Now.ToShortDateString());
sqlQueryCmd2.ExecuteNonQuery();
sqlQueryCmd2.Dispose();
sqlConnectionCmdString2.Close();
GridView1.DataBind();
}
둘 다 AutoPostBack에 대해 DDL이 설정됩니다. 문제는 이벤트가 DropDownList4
에서 트립되었을 때 페이지를 다시 DropDownList3
의 결과로 가져 오지 않는다는 것입니다. 대신 페이지가 당기는 것은 다음과 같습니다.
<EmptyDataTemplate>
No records could be retrieved from the database. We apologize for the invonvenience.
</EmptyDataTemplate>
각 수정시 그리드 뷰를 새로 고치려면 어떻게해야합니까?
.cs 파일에 코드를 게시하여 진행 상황을 확인하십시오. –