0

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

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

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

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

回发:

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

    }

行命令:

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

        }

    }
4

0 回答 0