2016-07-31 2 views
0

내 데이터 테이블에 문제가 있습니다. 데이터 테이블에 내 데이터베이스의 값이 채워지는 순간입니다. 새 파일을 데이터베이스에 업로드하면 데이터 테이블이 자동으로 업데이트되어 업데이트 된 내용이 표시됩니다. 하지만 지금 나는 가지고 datatable와 상관 관계에있는 데이터베이스에서 레코드를 삭제 버튼이 있습니다. 문제는 지금 내가 레코드를 삭제 한 후 데이터 테이블이 새로 고쳐지지 않고 레코드를 여전히 보여줍니다. 레코드가 삭제되었음을 확인했으며, 데이터 테이블은 업데이트되지 않습니다. (페이지를 새로 고친 후에 만 ​​업데이트됩니다).삭제 후 데이터 테이블이 업데이트되지 않습니다.

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가있는 데이터 테이블

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

삭제 버튼에

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

충전 데이터 : 아래 버튼

데이터 테이블 내 코드는 데이터 테이블에 대한, 그리고 삭제 이 조건

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

테이블에있는 레코드를 하나만 삭제 한 경우이 조건으로 인해 눈금이 다시 바인딩되지 않습니다. 어쨌든이 조건은 그 자체가 잘못되었습니다. 테이블에 레코드가 없으면 결과를 바인딩해야합니다. if 조건을 제거하십시오.

당신은 당신이되고 당신의 데이터 테이블을 원한다면 직후

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

을 삭제 그리드 뷰 데이터 업데이트 후 다음 그냥이 라인을 추가, 삭제하려면 내가 제대로 그래서 아래 질문에 대해 점점 아니에요

0

내 대답 입니다 업데이트 후에 삭제 한 다음이 줄을 추가하십시오.

YourDataTable.AcceptChanges(); 
관련 문제