2016-11-16 2 views
0

Ich habe Formular in PlaceHolder-Steuerelement dynamisch erstellt, die in FormView in InsertItemTemplate befindet. Ich habe einen Knopf, auf dem ein Klick-Formular in FORMView sichtbar ist und innerhalb eines Formulars habe ich einen Button zum Einfügen. Wenn ich auf die Schaltfläche Einfügen klicke, verschwindet der Teil des Formulars, der dynamisch im Code erstellt wurde.Dynamisch erstelltes Formular verschwindet nach dem Drücken der Taste

Dies ist Code in ASP-Seite:

<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> 

Und das ist Methode, die anderen Teil Formular erstellen und in Platzhalter setzen:

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 

Dies ist der Knopf auf dem meine Form Klick werden sichtbar und erstellt:

Hier ist der Knopf (Einfügen) in meinem Formular, auf dem klicken Sie fo rm verschwinden:

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 

Was muss ich tun, um mein Formular verschwinden nach dem Klicken zu stoppen?

Antwort

0

Dynamische Steuerelemente müssen bei jeder Seitenladung (neu) erstellt werden, und dazu gehört auch ein PostBack.

So platzieren BindData() innerhalb des Page_Load

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

habe ich diese und Form wieder nach Button-Klick verschwindet. Aber wenn dies passiert, werden alle meine Daten verloren gehen, weil das Formular neu erstellt wird. – SeaSide

+0

Die Daten gehen verloren, wenn Sie das Formular NICHT neu erstellen. Und an "btnShowForm" ist das Ereignis "btnShowForm_Click" nicht gebunden. Das ist wahrscheinlich der Grund, warum es immer noch nicht funktioniert. – VDWWD

Verwandte Themen