繁体   English   中英

为什么我的Gridview在单击第2页(分页)后会消失

[英]Why my Gridview will disappear after clicking on page 2(Paging)

我的数据库表中有7条记录,称为EntryTable。 我将页面限制设置为每页5条记录。 因此,第1页将有5条记录,而第2页将有2条记录。 但是在单击“全部搜索”并单击第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();
    }
}

EDITED

单击第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 + "!";


    }
}

它应该工作。 也许grdResult_PageIndexChanging事件没有触发

因此,在

    int newPageIndex = e.NewPageIndex;

或在这条线上

    grdResult.PageIndex = newPageIndex;

如果此事件未运行,则可能是您的结果网格尚未附加此事件。 请尝试重新安装它,我认为,机会会起作用。

EDITS:

最后用这个编辑

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

暂无
暂无

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

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