C#PostBack问题

时间:2016-11-14 11:07:11

标签: c# gridview postback rowcommand

我在从GridView回发RowCommand时遇到了一些问题。不确定我的逻辑是否正确,所以如果有人能够指出我哪里出错那会很棒。

似乎有很多类似的问题,但是没有一个解决方案在gridview中有一组默认结果,然后使用像这种情况的搜索结果重新绑定。

问题是当RowCommand被触发时我得到了错误的结果。在默认加载时,按钮正常工作但如果我搜索客户然后使用RowCommand,页面会回发并重新绑定网格,默认客户总是将我发送给错误的客户。

  1. 页面加载:使用登录用户默认客户端填写GridView
  2. 搜索框:搜索公司的整个客户列表并重新填充gridview
  3. RowCommand:将用户发送给客户
  4. 回传:

                    if(!IsPostBack)
            {
                //Check if user logged in
                User A_User = new User();
    
                if(!A_User.Check_Logged_In())
                {
                    if(A_User.Should_Redirect(System.IO.Path.GetFileName(Request.PhysicalPath)))
                    {
                        //Redirect user to login page
                        Response.Redirect(A_User.Login_Page());
                    }
                }
    
                //Modify nav buttons
                HtmlGenericControl nav = (HtmlGenericControl)this.Page.Master.FindControl("UserPanel").FindControl("li_nav_address_book");
    
                nav.Attributes["class"] = "active";
    
                //Load logged in users customers
                BindGrid(false);
    
            }else
            {
                //Check for request
                if(Request.Params["__EVENTTARGET"] != null)
                {
                    //Check for search string
                    if(Request.Params["__EVENTTARGET"].ToString().Contains("SearchCustomers"))
                    {
                        //Load customers by search results
                        BindGrid(true);
    
                    }
                    //else
                    //{
    
                    //    if(Request.Params["__EVENTTARGET"].ToString().Contains("btn2"))
                    //    {
    
                    //        Console.WriteLine("SENDER: ", "btn2 RowCommand");
                    //        BindGrid(true);
                    //    }
                    //}
    
                }
    
            }
    

    搜索按钮:

        protected void btn_Search_Click(object sender, EventArgs e)
        {
            BindGrid(true);
    
        }
    

    网格绑定:

        private void BindGrid(bool Search)
        {
    
            if(!Search)
            {
                //Load customers by rep ID
                Contacts Contact_Manager = new Contacts();
    
                gvCustomers.DataSource = null;
    
                DataSet dsCustomers = Contact_Manager.Get_Customers_By_UserID((int)Session["User_ID"]);
                DataTable tblCustomers = dsCustomers.Tables[0];
    
                gvCustomers.DataSource = tblCustomers;
                gvCustomers.DataBind();
            }
            else
            {
                //Load customers by search terms
                Contacts Contact_Manager = new Contacts();
    
                //Search by replacing spaces to do a rainbow database search as whole text instead of tags
                DataSet dsCustomers = Contact_Manager.Get_Customers_By_Tags(tb_GetContacts.Text.Replace(" ", ""));
                DataTable tblCustomers = dsCustomers.Tables[0];
    
                gvCustomers.DataSource = null;
    
                gvCustomers.DataSource = tblCustomers;
                gvCustomers.DataBind();
            }
    
        }
    

    RowCommand:

        protected void gvCustomers_RowCommand(object sender,
            GridViewCommandEventArgs e)
        {
            if(e.CommandName == "Customer_Detail")
            {
    
                int Customer_ID = Convert.ToInt32(e.CommandArgument);
    
                Response.Redirect("~/Customer/" + Customer_ID);
    
            }
    
        }
    

0 个答案:

没有答案