我的数据表出现问题,目前我的数据表填充了数据库中的值。当我将新文件上传到数据库时,我的数据表将自动更新并显示已更新的内容。但现在我有一个按钮,它删除数据库中的记录,该记录与我拥有的数据表相关。现在的问题是,在我删除了记录之后,数据表没有刷新,它仍然显示那里的记录。我已经验证记录已被删除,只是我的数据表不会更新。(它只会在刷新页面后更新)。下面是我的数据表代码和删除按钮
数据表:
<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 :(得分:1)
在FillDataFile里面有这种情况
if (dtFile.Rows.Count > 0)
{
FileTableView.DataSource = dtFile;
FileTableView.DataBind();
}
如果您删除了表中仅存在的一条记录,则此条件会阻止重新绑定网格。无论如何,这种情况本身就是错误的。如果表中没有记录,则应该绑定结果。删除if条件。
答案 1 :(得分:0)
我没有正确理解您的问题,所以下面是我的答案 如果您希望在删除后更新网格视图数据,则只需在删除后添加此行
YourGridView.DataSource = YourDataTable;
YourGridView.DataBind();
如果您希望在删除后更新数据表,则只需添加此行
YourDataTable.AcceptChanges();