删除后数据表不更新

时间:2016-07-31 07:23:31

标签: c# asp.net datatable

我的数据表出现问题,目前我的数据表填充了数据库中的值。当我将新文件上传到数据库时,我的数据表将自动更新并显示已更新的内容。但现在我有一个按钮,它删除数据库中的记录,该记录与我拥有的数据表相关。现在的问题是,在我删除了记录之后,数据表没有刷新,它仍然显示那里的记录。我已经验证记录已被删除,只是我的数据表不会更新。(它只会在刷新页面后更新)。下面是我的数据表代码和删除按钮

数据表:

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

2 个答案:

答案 0 :(得分:1)

在FillDataFile里面有这种情况

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

如果您删除了表中仅存在的一条记录,则此条件会阻止重新绑定网格。无论如何,这种情况本身就是错误的。如果表中没有记录,则应该绑定结果。删除if条件。

答案 1 :(得分:0)

我没有正确理解您的问题,所以下面是我的答案 如果您希望在删除后更新网格视图数据,则只需在删除后添加此行

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

如果您希望在删除后更新数据表,则只需添加此行

YourDataTable.AcceptChanges();