2016-11-16 6 views
0

InsertItemTemplateのFormViewにあるPlaceHolderコントロールでフォームを動的に作成しました。 FOrmView内のクリックフォームが表示され、フォーム内にInsertのボタンがあるボタンがあります。挿入ボタンをクリックすると、コードビハインドで動的に作成されたフォームの部分が消えます。ボタンを押すと動的に作成されたフォームが消える

これは、ASPページ内のコードです:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 

    <asp:Button ID="btnShowForm" runat="server" BackColor="#336699" Font-Names="Arial" Font-Size="9pt" ForeColor="White" Text="Show Form" Width="160px"/> 

    <br> 

    <asp:FormView ID="FV" runat="server" DefaultMode="Edit" Width="100%"> 

    <InsertItemTemplate> 

     <table style="width:60%; border: 1px solid black; border-collapse: collapse;"> 

     <asp:PlaceHolder ID="plControlUnos" runat="server" /> 

     <tr> 
     <td style="height:30px; text-align:center;" colspan="7"> 

     <asp:Button ID="save" runat="server" BackColor="#336699" Font-Names="Arial" Font-Size="9pt" ForeColor="White" Text="Insert" Width="140px" CommandName="insert"/> 
     <asp:Button ID="cancel" runat="server" BackColor="#336699" Font-Names="Arial" Font-Size="9pt" ForeColor="White" Text="Cancel" Width="140px" CommandName="cancel"/> 

     </td> 
     </tr> 
     </table> 

</InsertItemTemplate> 

</asp:FormView> 

</asp:Content> 

そして、これは、フォームの他の部分を作成して、プレースホルダに入れられたメソッドです:

Sub BindData() 

Dim strConnString As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString 
Dim con As New SqlConnection(strConnString) 
Dim cmd As New SqlCommand() 

cmd.CommandType = CommandType.Text 
cmd.CommandText = "SELECT NAZIV, NAZIV_POLJA FROM PR;" & _ 
"SELECT NAZIV, NAZIV_POLJA FROM PP" 

cmd.Connection = con 

Using sda As New SqlDataAdapter() 
    cmd.Connection = con 
    sda.SelectCommand = cmd 

    Using ds As New DataSet 

     Try 
      con.Open() 
      sda.Fill(ds) 
    Dim holder As PlaceHolder = CType(FV.FindControl("plControlUnos"), PlaceHolder) 

    For Each Row As DataRow In ds.Tables(0).Rows 


       holder.Controls.Add(New LiteralControl("<tr style='border: 1px solid black; height:30px;'>")) 
       holder.Controls.Add(New LiteralControl("<td style='padding-right:40px; width:400px; text-align:right; background-color:lightgray;border: 1px solid black;'><b>")) 

       holder.Controls.Add(New LiteralControl(Row(columnName:="Naziv"))) 

       holder.Controls.Add(New LiteralControl("</b></td>")) 
       holder.Controls.Add(New LiteralControl("<td style='width:300px; text-align:center; background-color:lightgray;border: 1px solid black;'>")) 

       Dim txtNOV As New TextBox() 
       txtNOV.ID = "txtNOV_" + Row(columnName:="NAZIV_POLJA") + "_KOMADA" 
       txtNOV.CssClass = "txtFormat" 
       holder.Controls.Add(txtNOV) 

       holder.Controls.Add(New LiteralControl("</td>")) 
       holder.Controls.Add(New LiteralControl("<td style='width:300px; text-align:center; background-color:lightgray;border: 1px solid black;'>")) 

       Dim txtNOV_SUM As New TextBox() 
       txtNOV_SUM.ID = "txtNOV_" + Row(columnName:="NAZIV_POLJA") + "_KOMADA_sum" 
       txtNOV_SUM.CssClass = "txtFormat" 
       txtNOV_SUM.Enabled = False 
       holder.Controls.Add(txtNOV_SUM) 

       holder.Controls.Add(New LiteralControl("</td>")) 
       holder.Controls.Add(New LiteralControl("</tr>")) 

    Next 

      holder.Controls.Add(New LiteralControl("<tr style='border: 1px solid black; height:30px;'>")) 
      holder.Controls.Add(New LiteralControl("<td colspan='2' style='text-align:center; background-color:lightgray;border: 1px solid black;'><b>UKUPNO NOVČANICE</b></td>")) 
      holder.Controls.Add(New LiteralControl("<td style='width:300px; text-align:center; background-color:lightgray;border: 1px solid black;'>")) 

      Dim txtNOV_KOMADA As New TextBox() 
      txtNOV_KOMADA.ID = "txtNOV_KOMADA" 
      txtNOV_KOMADA.CssClass = "txtFormat" 
      txtNOV_KOMADA.Enabled = False 
      holder.Controls.Add(txtNOV_KOMADA) 

      holder.Controls.Add(New LiteralControl("</td>")) 
      holder.Controls.Add(New LiteralControl("<td style='width:300px; text-align:center; background-color:lightgray;border: 1px solid black;'>")) 

      Dim txtNOV_KOMADA_sum As New TextBox() 
      txtNOV_KOMADA_sum.ID = "txtNOV_KOMADA_sum" 
      txtNOV_KOMADA_sum.CssClass = "txtFormat" 
      txtNOV_KOMADA_sum.Enabled = False 
      holder.Controls.Add(txtNOV_KOMADA_sum) 

      holder.Controls.Add(New LiteralControl("</td>")) 
      holder.Controls.Add(New LiteralControl("</tr>")) 

      holder.Controls.Add(New LiteralControl("<tr style='border: 1px solid black; height:25px;'>")) 
      holder.Controls.Add(New LiteralControl("<td rowspan='9' style='width:100px; text-align:center; background-color:lightgray;border: 1px solid black;' ><b>B)</b></td>" & _ 
                "<td colspan='3' style='padding-left:40px;width:100px; text-align:left; background-color:lightgray;border: 1px solid black;'><b>Kovani novac</b></td>" & _ 
                "</tr>")) 
     Catch ex As Exception 
      Response.Write("Error:" & ex.ToString) 
     Finally 
      cmd.Parameters.Clear() 
      con.Close() 
     End Try 

    End Using 
End Using 
End Sub 

これは私のフォームの意志をクリックしたボタンです表示され、作成されている:

Protected Sub btnShowForm_Click(sender As Object, e As EventArgs) Handles btnShowForm.Click 

If IsPostBack Then 

    FV.Visible = True 
    FV.ChangeMode(FormViewMode.Insert) 
    BindData() 

End If 

End Sub 

ここに私のフォーム内のボタン(挿入)があります。 rmが消えます:

Protected Sub FV_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewCommandEventArgs) Handles FV.ItemCommand 

If e.CommandName = "insert" Then 

Then 

End Sub 

ボタンクリック後にフォームが消えるのを止めるには何が必要ですか?

答えて

0

ダイナミックコントロールは、すべてのページの読み込み時に作成する必要があり、PostBackが含まれている必要があります。

のでPage_Load

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) 
    BindData()  
End Sub 
+0

BindData()を置いて、私はこれを追加し、フォームが再びボタンのクリック後に消えています。しかし、フォームが再作成されるため、このすべてのデータが失われることになります。 – SeaSide

+0

フォームを再作成しないとデータが失われます。また、 'btnShowForm'は' btnShowForm_Click'イベントがバインドされていません。それはおそらくまだそれが働いていない理由です。 – VDWWD

関連する問題