2017-07-28 1 views
0

Ich habe Updatepanel, in dem ich mit Tabellen bin alskeine Daten in asp Tabelle nach Post zurück

<asp:UpdatePanel ID="DynCreated" EnableViewState="true" UpdateMode="Conditional" 
      runat="server"> 
      <ContentTemplate > 
       <div style="display: none" enableviewstate="true"> 
        <asp:TextBox ID="flgClear" EnableViewState="true" Text="" runat="server"></asp:TextBox> 
        <asp:TextBox ID="flgAdd" EnableViewState="true" Text="" runat="server"></asp:TextBox> 
        <asp:TextBox ID="txtList" EnableViewState="true" Text="|" runat="server"></asp:TextBox> 
        <asp:TextBox ID="txtDelete" EnableViewState="true" Text="|" runat="server"></asp:TextBox></div> 
     <asp:Table ID="tblGrid" CssClass="grid" CellPadding="0" CellSpacing="0" 
        Width="100%" EnableViewState="true" runat="server"> <asp:TableRow TableSection="TableHeader" ID="trHeader" CssClass="crid-header Datagrid-header" 
         runat="server" EnableViewState="true"> 
         <asp:TableHeaderCell ID="hdrSequence" runat="server"> 
          <asp:Label ID="lblSequence" Text="#" CssClass="cel" runat="server" /> 
         </asp:TableHeaderCell> 
         <asp:TableHeaderCell ID="hdrHouseBill" runat="server"> 
          <asp:Label ID="lblHouseBill" Text="HouseBill" CssClass="ceva-form-label" runat="server" /> 
         </asp:TableHeaderCell> 
         <asp:TableHeaderCell ID="hdrFileNumber" runat="server"> 
          <asp:Label ID="lblFileNumber" Text="FileNumbere" CssClass="ceva-form-label" runat="server" /> 
         </asp:TableHeaderCell> 

        </asp:TableRow> 
       </asp:Table> 
       <br /> 
       <br /> 
       <div class="text-center"> 
        <asp:Button ID="btnAddNewHB" CssClass="tn btn-dialog" Text="Add New Status" 

        OnClientClick="return ShowNewLeg();" runat="server" /> 

        <asp:Button Text="Validate" CssClass="cen btn-dialog" runat="server" ID="btnValidate" /> 


        <asp:Button ID="btnSave" CssClass="tn-dialog" Text="Save" OnClientClick="return Save()" Visible="false" 
         runat="server" /> 
        <asp:Button ID="btnCancel" CssClass=" btn-dialog" OnClientClick="window.returnValue = 1; window.close(); return false;" 
         Text="Cancel" CausesValidation="false" runat="server" /> 
        <asp:Button ID="btnClear" CssClass=tn btn-dialog" Text="Clear All" OnClientClick="return ClearTable();" 
         runat="server" /> 
        <input type="hidden" id="hndtimeformat" runat="server" name="hndtimeformat" value="0" 
         style="display: none" /> 
       </div> 
      </ContentTemplate> 
     </asp:UpdatePanel> 

Von dem Back-End gezeigt i neue Zeile zur tblGrid ist Zugabe

 For j As Integer = tblGrid.Rows.Count To maxRow 
     Dim newRow As TableRow= New TableRow() 
    newRow.Cells.Add(CreateNewLabel(tblGrid.Rows.Count, "SEQ", 
    tblGrid.Rows.Count, tblGrid.Rows.Count, "40px", bColor)) 
    newRow.Cells.Add(CreateNewText(tblGrid.Rows.Count, "HB", "", 
     tblGrid.Rows.Count, "10px", "", 3, "none", False)) 
    newRow.Cells.Add(CreateNewLabel(tblGrid.Rows.Count, "FN", "", tblGrid.Rows.Count, "60px", "")) 
    newRow.Cells.Add(CreateNewDD(tblGrid.Rows.Count, "ST", statusup, tblGrid.Rows.Count, "10px", "", 3, "none", True)) 
newRow.Cells.Add(CreateNewDT(tblGrid.Rows.Count, "datetime", "", tblGrid.Rows.Count, "")) 
    newRow.Cells.Add(CreateNewAC(tblGrid.Rows.Count, "LC", "", "", tblGrid.Rows.Count, "0.0", AutoCompletor.DisplayFieldType.Code, "", "", False)) 
newRow.Cells.Add(CreateNewText(tblGrid.Rows.Count, "SG", "", tblGrid.Rows.Count, "10px", "", 0, "none")) 
newRow.Cells.Add(CreateNewCB(tblGrid.Rows.Count, "CB", "", tblGrid.Rows.Count, "5px", bColor)) 
    newRow.Cells.Add(CreateNewText(tblGrid.Rows.Count, "Note", "", tblGrid.Rows.Count, "10px", "", 0, "none")) 
newRow.Cells.Add(CreateNewLabel(tblGrid.Rows.Count, "Er", "", tblGrid.Rows.Count, "40px", bColor)) 
newRow.Cells.Add(CreateNewImage(tblGrid.Rows.Count, "btn", tblGrid.Rows.Count)) tblGrid.Rows.Add(newRow) Next j 

Ich bekomme Daten, was auch immer ich vor dem Post zurück, nach dem Post zurück, es hat keine Daten, die in der TabGrid vorhanden ist.

Muss ich ViewState oder Session verwenden? Gibt es irgendeine Möglichkeit, die Daten zu bekommen? Bitte Beratung !!

Antwort

0

Ihre Daten in einen Ansichtszustand setzen und sie nach dem Postback

0

Sie können eine Viewstate Variable verwenden, wenn man nur innerhalb dieser Seite während der Navigation diese Daten verwenden muß. Wenn Sie Daten für die gesamte Sitzung beibehalten möchten, verwenden Sie besser eine Sitzungsvariable, damit Sie diese Zeilen auch nicht verlieren, wenn Sie auf andere Seiten gehen.

Asp: Tabelle ist nicht das richtige Element zu verwenden, wenn Sie Daten verwalten wollen, schlage ich vor, diese Lösung zu versuchen (nur ein Beispiel):

<asp:GridView runat="server" ID="tblGrid" CssClass="grid" CellPadding="0" CellSpacing="0"> 
       <Columns > 
        <asp:TemplateField > 
         <HeaderTemplate > 
          <asp:Label ID="lblSequence" Text="#" CssClass="cel" runat="server" /> 
        </HeaderTemplate> 
         <ItemTemplate> 
          <asp:Label ID="lblSequenceItem" Text="<%# Eval("col1") %>" runat="server" /> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField> 
         <HeaderTemplate> 
          <asp:Label ID="lblHouseBill" Text="HouseBill" CssClass="ceva-form-label" runat="server" /> 
        </HeaderTemplate> 
         <ItemTemplate> 
          <asp:Label ID="lblHouseBillItem" Text="<%# Eval("col2") %>" runat="server" /> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField> 
         <HeaderTemplate> 
          <asp:Label ID="lblFileNumber" Text="FileNumbere" CssClass="ceva-form-label" runat="server" /> 
        </HeaderTemplate> 
         <ItemTemplate> 
          <asp:Label ID="lblFileNumberItem" Text="<%# Eval("col3") %>" runat="server" /> 
         </ItemTemplate> 
        </asp:TemplateField> 
       </Columns> 
      </asp:GridView> 

und diese zur Laufzeitdatenbindung: Creation Datentabelle von

Dim dt As New Data.DataTable("rows") 
    Dim col1 As New Data.DataColumn("col1", GetType(String)) 
    Dim col2 As New Data.DataColumn("col2", GetType(Integer)) 
    Dim col3 As New Data.DataColumn("col3", GetType(String)) 

    dt.Columns.Add(col1) 
    dt.Columns.Add(col2) 
    dt.Columns.Add(col3) 

    dt.Rows.Add ("test",1,"test") 'statement for row insert 

    ViewState("datasource") = dt 

    tblGrid.DataSource = dt 
    tblGrid.DataBind() 

Und Bindung in Postbacks:

Dim dt As New Data.DataTable("rows") 

    If Not ViewState("datasource") Is Nothing Then dt = ViewState("datasource") 

    tblGrid.DataSource = dt 
    tblGrid.DataBind() 
+0

, wenn ich in Viewstate setzen Es gibt mir "Typ" System.Web.UI.WebControls.Table 'in Assembly "System.Web, Version = 2.0.0.0, Kultur = neutral, PublicKeyToken = b03f5f7f11d50a3a' ist nicht als serialisierbar markiert." Fehler – user7776356

+0

Versuchen Sie, eine Datentabelle statt einer Tabelle zu definieren, auf diese Weise können Sie in Viewstate speichern und auch wie Table.datasource festlegen – FabioTos