2016-07-31 196 views
0

我的數據表有問題,此刻我的數據表中填充了來自我的數據庫的值。當我將一個新文件上傳到數據庫時,我的數據表會自動更新並顯示它已更新的內容。但是現在我有一個按鈕,它從數據庫中刪除一條與我擁有的數據表相關的記錄。現在的問題是,我刪除記錄後,數據表不刷新,它仍然顯示在那裏的記錄。我已經驗證記錄已被刪除,只是我的數據表不會更新(它只會在我刷新頁面後更新)。下面是我的代碼的數據表,以及刪除按鈕數據表在刪除後不更新

數據表:

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

填充數據到數據表

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(); 
    } 
} 

刪除按鈕

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

你有隻有一條記錄,並刪除該記錄? – Steve

+0

DataTable dtFile; (page_load之上的那一行)是在除FillDataFile()方法之外的其他地方引用的嗎? – objectNotFound

回答

1

裏面FillDataFile有這種情況

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

如果您已刪除表中唯一的一條記錄,則此情況會阻止重新綁定網格。無論如何,這種情況本身就是錯誤的。如果表中沒有記錄,則無論如何您都應該綁定結果。刪除if條件。

0

我無法正常獲得關於你的問題那麼下面就是我的回答 如果你希望你的網格視圖數據更新刪除後,然後就加入這行只是刪除

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

後,如果您希望您的數據表是更新後刪除,然後只是添加此行

YourDataTable.AcceptChanges();