【问题标题】:Why my Gridview will disappear after clicking on page 2(Paging)为什么单击第 2 页后我的 Gridview 会消失(分页)
【发布时间】:2014-06-08 00:52:24
【问题描述】:

我的数据库表中有 7 条记录,称为 EntryTable。我将页面限制设置为每页 5 条记录。所以第1页有5条记录,第2页有2条记录。但是当我点击 Search All 并点击 page 2 后,整个 gridview 就消失了。

搜索全部后

点击第2页后

public partial class Search : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack == false)
        {
            bindResultGridView();

        }

        string memName = (String)Session["UserName"];
        if (Session["Username"] != null && Session["Username"] != String.Empty)
        {
            //txtUserName.Text = "Welcome, " + memName + "!";


        }
    }

    protected void SearchBlog(object sender, EventArgs e)
    {
        String ConStr = ConfigurationManager.ConnectionStrings["BlogConnectionString"].ConnectionString;
        SqlConnection con = new SqlConnection(ConStr);

        try
        {
            string invalid = txtSearch.Text;

            String SQL = null;

            if (invalid == "all")
            {
                SQL = "SELECT BlogID, AdminNumber, Name, Description FROM [EntryTable]";
            }
            else
            {
                SQL = "SELECT BlogID, AdminNumber, Name, Description FROM [EntryTable] WHERE AdminNumber LIKE @searchAdminNumber OR BlogType LIKE @searchBlogType OR Name LIKE @searchName";
            }


            SqlCommand cmd = new SqlCommand(SQL, con);
            con.Open();

            cmd.Parameters.Add("@searchBlogType", SqlDbType.NVarChar, 50);
            cmd.Parameters["@searchBlogType"].Value = txtSearch.Text + "%";

            cmd.Parameters.Add("@searchName", SqlDbType.NVarChar, 50);
            cmd.Parameters["@searchName"].Value = txtSearch.Text + "%";

            cmd.Parameters.Add("@searchAdminNumber", SqlDbType.NVarChar, 50);
            cmd.Parameters["@searchAdminNumber"].Value = txtSearch.Text + "%";

            SqlDataReader reader = cmd.ExecuteReader();
            DataTable dt = new DataTable();
            dt.Load(reader);
            grdResult.DataSource = dt;
            grdResult.DataBind();
            lblError.Text = "";


            if (dt.Rows.Count > 0)
            {
                lblError.Text = null;
            }
            else
            {
                lblError.Text = "Record not found";
            }

            reader.Close();
        }
        catch (Exception)
        {
            lblError.Text = "Error!";
            //lblOrderError.Text = ex.Message;
        }
        finally
        {
            con.Close();
        }
    }



    private void bindResultGridView()
    {
        String ConStr = ConfigurationManager.ConnectionStrings["BlogConnectionString"].ConnectionString;
        SqlConnection con = new SqlConnection(ConStr);

        try
        {
            string invalid = txtSearch.Text;

            String SQL = null;

            if (invalid == "all")
            {
                SQL = "SELECT BlogID, AdminNumber, Name, Description FROM [EntryTable]";
            }
            else
            {
                SQL = "SELECT BlogID, AdminNumber, Name, Description FROM [EntryTable] WHERE AdminNumber LIKE @searchAdminNumber OR BlogType LIKE @searchBlogType OR Name LIKE @searchName";
            }


            SqlCommand cmd = new SqlCommand(SQL, con);
            con.Open();

            cmd.Parameters.Add("@searchBlogType", SqlDbType.NVarChar, 50);
            cmd.Parameters["@searchBlogType"].Value = txtSearch.Text;

            cmd.Parameters.Add("@searchName", SqlDbType.NVarChar, 50);
            cmd.Parameters["@searchName"].Value = txtSearch.Text;

            cmd.Parameters.Add("@searchAdminNumber", SqlDbType.NVarChar, 50);
            cmd.Parameters["@searchAdminNumber"].Value = txtSearch.Text;



            SqlDataReader reader = cmd.ExecuteReader();
            DataTable dt = new DataTable();
            dt.Load(reader);
            grdResult.DataSource = dt;
            grdResult.DataBind();
            lblError.Text = "";

            reader.Close();
        }
        catch (SqlException ex)
        {
            lblError.Text = "Error:" + ex.Message.ToString();
        }
        finally
        {
            con.Close();
        }
    }

    protected void btnSearch_Click(object sender, EventArgs e)
    {

    }



    protected void grdResult_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (string.Compare(e.CommandName, "Page", true) != 0)
        {
            Response.Redirect("~/ResultDetails.aspx?cat=" + e.CommandArgument);
        }
    }


    protected void grdResult_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        int newPageIndex = e.NewPageIndex;
        grdResult.PageIndex = newPageIndex;
        bindResultGridView();
    }
}

已编辑

点击第 2 页后

protected void Page_Load(object sender, EventArgs e)
{

        bindResultGridView();



    string memName = (String)Session["UserName"];
    if (Session["Username"] != null && Session["Username"] != String.Empty)
    {
        //txtUserName.Text = "Welcome, " + memName + "!";


    }
}

【问题讨论】:

    标签: c# asp.net gridview paging


    【解决方案1】:

    它应该工作。也许grdResult_PageIndexChanging 事件不会触发

    所以在

    上创建一个断点
        int newPageIndex = e.NewPageIndex;
    

    或在这一行

        grdResult.PageIndex = newPageIndex;
    

    如果这个事件没有运行,可能你的结果网格没有附加这个事件。请尝试重新连接它,我认为,机会会起作用。

    编辑:

    最后用这个编辑

        else if (invalid == "") { 
         SQL = "SELECT BlogID, AdminNumber, Name, Description FROM [EntryTable]"; 
        }
    

    【讨论】:

    • grdResult_PageIndexChanging 怎么样?有 bindResultGridView();在里面
    • 我删除了 if (Page.IsPostBack == false) { } 还是一样的@Bellash
    • Erm 对不起,我想我想出了一些东西,实际上在我问的这个问题中,我实际上并没有输入 All 并搜索它。我没有输入任何内容并搜索它,在进入第 2 页后,gridview 将消失。但是如果我输入全部并单击搜索,然后单击第 2 页,它将显示必要的记录。如何解决单击第2页时不输入任何内容而gridview消失的问题? @贝拉什
    • 用这个做的。不管怎么说,还是要谢谢你。你想把这个作为答案让我打勾吗? else if (invalid == "") { SQL = "SELECT BlogID, AdminNumber, Name, Description FROM [EntryTable]"; }
    • 编辑了我的答案。感谢您的参与@Jordjmax
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 2023-03-05
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 2012-12-06
    • 2010-10-09
    相关资源
    最近更新 更多