2016-07-31 12 views
0

Ich habe Probleme mit meiner Datentabelle, im Moment ist meine Datentabelle mit Werten aus meiner Datenbank gefüllt. Wenn ich eine neue Datei in die Datenbank hochlade, wird meine Datentabelle automatisch aktualisiert und zeigt an, wofür sie aktualisiert wurde. Aber jetzt habe ich eine Schaltfläche, die einen Datensatz aus der Datenbank löscht, der mit der Datentabelle, die ich habe, korreliert ist. Das Problem ist im Moment, dass nachdem ich den Datensatz gelöscht habe, die Datentabelle nicht aktualisiert wird und der Datensatz dort immer noch angezeigt wird. Ich habe überprüft, dass der Datensatz gelöscht wurde, nur dass meine Datentabelle nicht aktualisiert wird. (Es wird nur aktualisiert, nachdem ich die Seite aktualisiert habe). Hier sind meine Codes für die Datentabelle und TasteDatatable nicht aktualisieren nach dem Löschen

Datentabelle löschen:

<asp:GridView ID="FileTableView" CssClass="datagrid" HeaderStyle-CssClass="datagridHeader" RowStyle-CssClass="datagridRows" runat="server" AutoGenerateColumns="False" DataKeyNames="fileid, filename"> 
    <Columns> 
     <asp:TemplateField HeaderText="Master Folder"> 
      <ItemTemplate> 
       <asp:LinkButton ID="FileLinkButton" CommandName="ShowPopup" OnCommand="File_Command" CommandArgument='<%# Eval("fileid") %>' runat="server" Text='<%# Eval("filename") %>'></asp:LinkButton> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

Filling Daten in die Datentabelle

DataTable dtFile;  
protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!IsPostBack) 
    { 
     // Fill up file and folder data on the display 
     FillDataFile();          
    } 
} 

private void FillDataFile() 
{   
    dtFile = new DataTable(); 
    SqlDataReader reader = MBFile.GetFileToDisplay(Context.User.Identity.Name); 
    dtFile.Load(reader); 
    if (dtFile.Rows.Count > 0) 
    { 
     FileTableView.DataSource = dtFile; 
     FileTableView.DataBind(); 
    } 
} 

Schaltfläche Löschen

protected void File_Command(object sender, CommandEventArgs e) 
{ 
    string command = e.CommandName; 
    MBFile file; 

    switch (command) 
    { 
     case "ShowPopup": 
      System.Diagnostics.Debug.WriteLine("Running"); 
      long fileid = Convert.ToInt64(e.CommandArgument.ToString()); 
      System.Diagnostics.Debug.WriteLine("FileID: " + fileid); 
      file = MBFile.RetrieveFile(Context.User.Identity.Name, fileid); 
      LblFileID.Text = fileid.ToString(); 
      LblFileName.Text = file.fileName; 
      LblFileType.Text = file.fileType; 
      LblFileSize.Text = file.fileSize.ToString(); 

      ScriptManager.RegisterStartupScript(this, this.GetType(), "myModal", "showPopup();", true); 
      break; 

     case "Delete": 
      System.Diagnostics.Debug.WriteLine("Deleting"); 
      MBFile.DeleteFile(Context.User.Identity.Name, Convert.ToInt64(LblFileID.Text));    
      FillDataFile(); 
      break; 

     case "Download": 
      System.Diagnostics.Debug.WriteLine("Downloading"); 
      DownloadFileContent(Context.User.Identity.Name, Convert.ToInt64(LblFileID.Text)); 
      Page.ClientScript.RegisterStartupScript(Page.GetType(), "Delete Status", "<script language='javascript'>alert('" + "File has been deleted" + "')</script>"); 
      break; 
    } 
} 
+0

Haben Sie nur einen Datensatz und diesen Datensatz gelöscht? – Steve

+0

DataTable dtFile; (Die Zeile oberhalb von page_load) wird anderswo als in der FillDataFile() -Methode referenziert? – objectNotFound

Antwort

1

Innen FillDataFile gibt es diese Bedingung

if (dtFile.Rows.Count > 0) 
{ 
    FileTableView.DataSource = dtFile; 
    FileTableView.DataBind(); 
} 

Wenn Sie den einzigen in der Tabelle vorhandenen Datensatz gelöscht haben, verhindert diese Bedingung die erneute Bindung Ihres Rasters. In jedem Fall ist diese Bedingung an sich falsch. Wenn Sie keine Datensätze in der Tabelle haben, sollten Sie das Ergebnis trotzdem binden. Entfernen Sie die if-Bedingung.

0

ich nicht richtig über Ihre Frage so unten immer bin, ist meine Antwort Wenn Sie Ihre Rasteransicht Datenaktualisierung wollen nach fügen Sie dann löschen Sie einfach diese Zeile nach nur

YourGridView.DataSource = YourDataTable; 
YourGridView.DataBind(); 

löschen Wenn Sie Ihre Datentabelle sein wollen Update nach dem Löschen dann einfach diese Zeile hinzufügen

YourDataTable.AcceptChanges(); 
Verwandte Themen