单击表单

时间:2017-07-25 19:41:39

标签: javascript c# asp.net webforms

我有一个aspx页面,其中包含3个字段的gridview和一个“Update”按钮。当我点击“更新”按钮时,我将被重定向到另一个aspx页面,该页面的表单包含有关网格视图中通过单击“更新”按钮选择的条目的更多信息。表单包含更多字段和一个“删除”按钮。当我单击“删除”按钮时,我需要关闭打开的表单并返回到gridview并删除该条目。我正在使用TemplateField来进行gridview。

<asp:GridView ID="GridView1" runat="server">
   <Columns>
     <asp:TemplateField ShowHeader="False" HeaderText=" ">
          <ItemTemplate>
              <asp:Button ID="Btn_Update" Text="Update" runat="server" ButtonType="Button" CommandName="update" />
          </ItemTemplate>
      </asp:TemplateField>
        <asp:BoundField DataField="ID" HeaderText="ID" />
        <asp:BoundField DataField="FirstName" HeaderText="First Name" />
        <asp:BoundField DataField="LastName" HeaderText="Last Name"  />
    </Columns>
</asp:GridView>

这是我单击表单中的“删除”按钮后关闭它然后返回到gridview的代码:

 protected void btn_Delete_Click(object sender, EventArgs e)
{

    #region Redirect to Page
    Page.ClientScript.RegisterStartupScript(this.GetType(), "RefreshParent", "<script language='javascript'>RefreshParent()</script>");
    Response.Write("<script>window.close();</" + "script>");
    #endregion

    ClearData();
}

如何在单击表单中的“删除”按钮后从gridview中删除该行?谢谢大家

1 个答案:

答案 0 :(得分:0)

这是一些示例代码,因此您可以了解相关信息。它是WPF + C#,而不是网络,但你应该得到漂移。这个想法是一样的。

您的主要计划:

public delegate void DeleteRow(bool doDelete);

/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
    int selectedRow = 0;
    public DeleteRow deleteRowDelegate;

    public void ReportDelete(bool delete)
    {
        // Delete the row here.
    }

    public MainWindow()
    {
        InitializeComponent();
        deleteRowDelegate += new DeleteRow(ReportDelete);
    }

    private void btnOK_Click(object sender, RoutedEventArgs e)
    {            
        // Here, get the row number to selectedRow.

        SecondaryWin win = new SecondaryWin(deleteRowDelegate);
        win.ShowDialog();

        // At this point, if DELETE was clicked in your secondary window, code would have executed ReportDelete() method.
    }
}

这将是你的辅助窗口:

public partial class SecondaryWin : Window
{
    DeleteRow callbackDel;

    public SecondaryWin(DeleteRow callback)
    {
        InitializeComponent();
        callbackDel = callback;
    }

    private void btnDel_Click(object sender, RoutedEventArgs e)
    {
        callbackDel.Invoke(true);
        // Close the window
    }
}

因此,在您的主要文件中,您将ReportDelete()方法注册到DeleteRow委托,然后将其传递到辅助窗口。我已经在构造函数中传递了它,但如果您愿意,可以使用不同的方法。

然后在我的辅助窗口中,您可以在单击DELETE按钮时调用该委托,然后退出该窗口。

回到Main(),只要在辅助窗口中单击DELETE,它就会执行ReportDelete()方法中的代码,您可以删除该特定行。为此目的使用selectedRow。