2014-04-24 3 views
0

Button1_Click에서 코드를 실행 한 후 UpdatePanel1을 업데이트하고 싶습니다.Button1_Click에서 코드를 처음 실행 한 후 UpdatePanel1의 GridView1을 새로 고칩니다.

UpdatePanel1.Update()가 GridView1을 업데이트하지 않습니다.

푸시 버튼 이벤트에서 코드를 실행 한 후에 Button1을 푸시 한 직후에 UpdatePanel1의 트리거가 실행되고 있다고 생각합니다.

Button1_Click에서 코드를 처음 실행 한 후 UpdatePanel1에서 GridView1을 새로 고침하고 싶습니다.

Default.aspx.vb

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click 
    Dim connStr As String = "connection string works" 
    Dim cmdStr As String = "INSERT INTO [test] ([datetime],[col1],[col2],[col3]) VALUES (@datetime,@col1,@col2,@col3);" 
    Try 
     Using conn As New SqlConnection(connStr) 
      Using cmd As New SqlCommand(cmdStr, conn) 
       conn.Open() 
       cmd.Parameters.AddWithValue("@datetime", DateTime.Now) 
       cmd.Parameters.AddWithValue("@col1", TextBox1.Text) 
       cmd.Parameters.AddWithValue("@col2", TextBox2.Text) 
       cmd.Parameters.AddWithValue("@col3", TextBox3.Text) 
       cmd.ExecuteNonQuery() 
       conn.Close() 
       cmd.Dispose() 
       conn.Dispose() 
      End Using 
     End Using 
    Catch ex As Exception 

    End Try 
    UpdatePanel1.Update() 
End Sub 

Default.aspx를

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click"></asp:AsyncPostBackTrigger> 
    </Triggers> 
    <ContentTemplate> 
     <center><table><tr><td align="center"> 
       <asp:Label ID="Label4" runat="server" Text="Column 1"></asp:Label></td><td align="center"> 
       <asp:Label ID="Label5" runat="server" Text="Column 2"></asp:Label></td><td align="center"> 
       <asp:Label ID="Label6" runat="server" Text="Column 3"></asp:Label><br /></td></tr><tr><td align="center"> 
       <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td><td align="center"> 
       <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></td><td align="center"> 
       <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br /></td></tr><tr><td colspan="3" align="center"> 
       <asp:Button ID="Button1" runat="server" Text="Insert Into Gridview" /></td></tr><tr><td><br /> 
       <asp:GridView ID="GridView1" 
        DataSourceID="SqlDataSource1" 
        AutoGenerateColumns="true" 
        AllowPaging="true" 
        PageSize="50" 
        AllowSorting="true" 
        DataKeyNames="idt" 
        AutoGenerateEditButton="true" 
        AutoGenerateDeleteButton="true" 
        runat="server"> 
       </asp:GridView> 
       <asp:SqlDataSource 
        ID="SqlDataSource1" 
        ConnectionString="<%$ ConnectionStrings:connone %>" 
        SelectCommand="SELECT * FROM [test];" 
        DataSourceMode="DataSet" 
        UpdateCommand="UPDATE test [datetime],[col1],[col2],[col3] SET @datetime, @col1, @col2, @col3;" 
        DeleteCommand="DELETE FROM [test] WHERE [idt][email protected];" 
        runat="server"> 
       </asp:SqlDataSource> 
     </td></tr></table></center> 
    </ContentTemplate> 
</asp:UpdatePanel> 

답변

0

당신은 Button1을 당신의 UpdatePanel에 대한 트리거입니다 이후를 Button1_Click 방법에 UpdatePanel1.Update()를 호출 할 필요는 없습니다. 대신 GridView1.DataBind()를 호출하여 다음과 같이 DB에서 데이터를 다시 가져와야합니다.

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click 
Dim connStr As String = "connection string works" 
Dim cmdStr As String = "INSERT INTO [test] ([datetime],[col1],[col2],[col3]) VALUES (@datetime,@col1,@col2,@col3);" 
Try 
    Using conn As New SqlConnection(connStr) 
     Using cmd As New SqlCommand(cmdStr, conn) 
      conn.Open() 
      cmd.Parameters.AddWithValue("@datetime", DateTime.Now) 
      cmd.Parameters.AddWithValue("@col1", TextBox1.Text) 
      cmd.Parameters.AddWithValue("@col2", TextBox2.Text) 
      cmd.Parameters.AddWithValue("@col3", TextBox3.Text) 
      cmd.ExecuteNonQuery() 
      conn.Close() 
      cmd.Dispose() 
      conn.Dispose() 
     End Using 
    End Using 
    Catch ex As Exception 

End Try 
GridView1.Databind() 
End Sub 
관련 문제