2016-07-31 76 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();