简体   繁体   English

在gridview中删除记录后如何刷新所有标签?

[英]How to refresh all label after deleting a record in the gridview?

On the left side, I have 3 labels that display the data according to the database. 在左侧,我有3个标签,它们根据数据库显示数据。 I want to whenever I delete a record in the gridview, the label will automatically refresh. 我想每当删除gridview中的一条记录时,标签就会自动刷新。 I do not want to click on the browser refresh button to refresh the labels. 我不想单击浏览器的刷新按钮来刷新标签。 I only want to refresh the labels. 我只想刷新标签。 I already create a method called UpdateLabel() and I put it in the grdEvent_RowUpdating and it works, whenever I edit, it will refresh the labels. 我已经创建了一个名为UpdateLabel()的方法,并将其放入grdEvent_RowUpdating并且该方法可以工作,只要我进行编辑,它将刷新标签。 But if I put the UpdateLabel() method in the grdEvent_RowDeleting , it doesn't work, why? 但是,如果我将UpdateLabel()方法放在grdEvent_RowDeleting ,则它不起作用,为什么? help. 救命。 help 救命

Click delete button on gridview, and this will pop up 单击gridview上的删除按钮,这将弹出

在此处输入图片说明

After clicking the ok button at the pop up. 单击确定按钮后,将弹出。

在此处输入图片说明

After clicking the refresh, then the label will refresh 单击刷新后,标签将刷新

在此处输入图片说明

protected void Page_Load(object sender, EventArgs e)
    {


        if (!IsPostBack)
        {
            UpdateLabels(); // Update labels without refreshing page

            string strConnString = ConfigurationManager.ConnectionStrings["ProjectConnectionString"].ConnectionString;
            string str;
            SqlCommand com;

            SqlConnection con = new SqlConnection(strConnString);
            con.Open();
            str = "select * from EVENT_ANNOUNCE where getdate() >= STARTDATE and cast(getdate() as Date) <= ENDDATE";
            com = new SqlCommand(str, con);
            SqlDataReader reader = com.ExecuteReader();



            var events = new List<string>();

            if (reader.HasRows)
            {
                while (reader.Read())
                    events.Add(reader["EVENTNAME"].ToString());
            }

            if (events.Count >= 1)
                lblEvent1.Text = events[0];
            if (events.Count >= 2)
                lblEvent2.Text = events[1];
            if (events.Count >= 3)
                lblEvent3.Text = events[2];

            reader.Close();
            con.Close();

        }


        if (Page.IsPostBack == false)
        {
            bindEventGridView();

        }



    }

    // Update labels without refreshing page
    public void UpdateLabels()
    {

        string strConnString = ConfigurationManager.ConnectionStrings["ProjectConnectionString"].ConnectionString;
        string str;
        SqlCommand com;

        SqlConnection con = new SqlConnection(strConnString);
        con.Open();
        str = "select * from EVENT_ANNOUNCE where getdate() >= STARTDATE and cast(getdate() as Date) <= ENDDATE";
        com = new SqlCommand(str, con);
        SqlDataReader reader = com.ExecuteReader();

        var events = new List<string>();

        if (reader.HasRows)
        {
            while (reader.Read())
                events.Add(reader["EVENTNAME"].ToString());
        }

        if (events.Count >= 1)
            lblEvent1.Text = events[0];
        if (events.Count >= 2)
            lblEvent2.Text = events[1];
        if (events.Count >= 3)
            lblEvent3.Text = events[2];

        reader.Close();
        con.Close();
    }

    protected void grdEvent_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        // get row selected by user
        int selectedRow = e.RowIndex;
        int ID = (int)grdEvent.DataKeys[selectedRow].Value;
        // Delete Record
        deleteEventRecord(ID);
        UpdateLabels();
    }

    private void deleteEventRecord(int ID)
    {

        string strConnectionString =
                ConfigurationManager.ConnectionStrings["ProjectConnectionString"].ConnectionString;
        SqlConnection myConnect = new SqlConnection(strConnectionString);

        string strCommandText = "DELETE EVENT_ANNOUNCE WHERE ID=@ID";

        SqlCommand cmd = new SqlCommand(strCommandText, myConnect);
        cmd.Parameters.AddWithValue("ID", ID);

        myConnect.Open();
        int result = cmd.ExecuteNonQuery();

        if (result > 0)
        {
            lblSuccess.Visible = true;
            lblSuccess.Text = "Record deleted";
            lblError.Visible = false;
        }
        else
        {
            lblError.Visible = true;
            lblError.Text = "Update fail";
            lblSuccess.Visible = false;
        }

        bindEventGridView();
        myConnect.Close();

    }

    protected void grdEvent_RowEditing(object sender, GridViewEditEventArgs e)
    {
        grdEvent.EditIndex = e.NewEditIndex;
        bindEventGridView();
    }

    protected void grdEvent_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        int selectedRow = e.RowIndex;   //get selected row
        //  get product id from data key
        int id = (int)grdEvent.DataKeys[selectedRow].Value;

        //  get current grid view row
        GridViewRow row = (GridViewRow)grdEvent.Rows[selectedRow];
        TextBox eventtype = (TextBox)row.FindControl("txtEventType");
        //  find text box for txtPrice
        TextBox eventname = (TextBox)row.FindControl("txtEventName");
        TextBox startdate = (TextBox)row.FindControl("txtStartDate");
        TextBox enddate = (TextBox)row.FindControl("txtEndDate");
        //  Remove $ sign
        string strEventType = eventtype.Text;
        string strEventName = eventname.Text;
        string strStartDate = startdate.Text;
        string strEndDate = enddate.Text;
        DateTime datStartDate;
        DateTime datEndDate;
        if (DateTime.TryParseExact(strStartDate, new string[] { "dd/MM/yyyy" },
                               System.Globalization.CultureInfo.InvariantCulture,
                               System.Globalization.DateTimeStyles.None, out datStartDate)
    &&
    DateTime.TryParseExact(strEndDate, new string[] { "dd/MM/yyyy" },
                               System.Globalization.CultureInfo.InvariantCulture,
                               System.Globalization.DateTimeStyles.None, out datEndDate)
   )
        {
            updateEventGridviewRecord(id, strEventType, strEventName, datStartDate, datEndDate);
        }

            /*
             || DateTime.TryParseExact(strEndDate, new string[] { "dd/MM/yyyy" },
                               System.Globalization.CultureInfo.InvariantCulture,
                               System.Globalization.DateTimeStyles.None, out datEndDate
             */

        else
        {
            lblError.Visible = true;
            lblError.Text = "Invalid Date";
            lblSuccess.Visible = false;
        }
        UpdateLabels();
    }

    private void updateEventGridviewRecord(int id, string strEventType, string strEventName, DateTime datStartDate, DateTime datEndDate)
    {
        try
        {
            string strConnectionString = ConfigurationManager.ConnectionStrings["ProjectConnectionString"].ConnectionString;
            SqlConnection myConnect = new SqlConnection(strConnectionString);

            string strCommandText = "UPDATE EVENT_ANNOUNCE SET [EVENTTYPE]=@EVENTTYPE, [EVENTNAME]=@EVENTNAME, [STARTDATE]=@STARTDATE, [ENDDATE]=@ENDDATE WHERE [ID]=@ID";

            SqlCommand cmd = new SqlCommand(strCommandText, myConnect);
            cmd.Parameters.AddWithValue("@id", id);
            cmd.Parameters.AddWithValue("@EVENTTYPE", strEventType);
            cmd.Parameters.AddWithValue("@EVENTNAME", strEventName);
            cmd.Parameters.AddWithValue("@STARTDATE", datStartDate);
            cmd.Parameters.AddWithValue("@ENDDATE", datEndDate);
            myConnect.Open();

            int result = cmd.ExecuteNonQuery();

            if (result > 0)
            {
                lblSuccess.Visible = true;
                lblSuccess.Text = "Record updated!";
                lblError.Visible = false;
            }
            else
            {
                lblSuccess.Visible = true;
                lblError.Text = "Update fail";
                lblError.Visible = false;
            }

            myConnect.Close();


            //Cancel Edit Mode
            grdEvent.EditIndex = -1;
            bindEventGridView();
        }

        catch
        {
            lblError.Visible = true;
            lblError.Text = "Please Enter Approximate data";
            lblSuccess.Visible = false;
        }
    }

Wrap your labels on the left panel in their own an update panel. 在左侧面板的自己的更新面板上包裹标签。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="LabelEvent1" runat="server" Width="99%" />
<asp:Label ID="LabelEvent2" runat="server" Width="99%" />
<asp:Label ID="LabelEvent3" runat="server" Width="99%" />
   </contenttemplate>
</asp:UpdatePanel>

In your row deleted event call your updateLabels method 在行删除事件中,调用updateLabels方法

 protected void grdEvent_RowDeleted(object sender, GridViewEditEventArgs e)
{
   if(e.Exception == null)
{
    UpdateLabels();
}
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM