【问题标题】:paging in gridview , 2nd page empty , gridview populated on a button click event在 gridview 中分页,第二页为空,gridview 填充在按钮单击事件上
【发布时间】:2015-01-19 14:43:45
【问题描述】:

我已经搜索过这个问题,但没有一个答案没有解决我的问题。

当用户键入一个单词并单击一个按钮时,SqlDataAdapter 会搜索数据库并将结果放入填充网格视图的数据表中。 在 gridview 中启用分页时,只有 gridview 的第一页显示数据!

这是我的代码。这是我的数据表定义的地方:

private DataTable dt = new DataTable();

protected void Page_Load(object sender, EventArgs e)
{
}

protected void btn_Search_Click(object sender, EventArgs e)
{
    kcestring.DataSource = @"localhost";
    kcestring.InitialCatalog = "KCE";
    kcestring.UserID = "sa";
    kcestring.Password = "123";

    SqlDataAdapter searchadap = newSqlDataAdapter("sp_GetDevicePropByDeviceName2", kcestring.ToString());
    searchadap.SelectCommand.CommandType = CommandType.StoredProcedure;

    SqlParameter categoryID = new SqlParameter("categoryID", SqlDbType.BigInt);

    categoryID.Value = drp_SubCategories.SelectedValue;

    searchadap.SelectCommand.Parameters.Add(categoryID);

    DataTable dt = new DataTable();
    searchadap.Fill(dt);

    grv_Device.DataSource = dt;
    grv_Device.DataBind();
}

protected void grv_Device_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    grv_Device.DataSource = dt;
    grv_Device.PageIndex = e.NewPageIndex;

    grv_Device.DataBind();
}

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    只需删除

    DataTable dt = new DataTable();
    

    之前

    searchadap.Fill(dt);
    

    原因是您定义了两个dt(一个是全局的,另一个是事件btn_Search_Click 的本地)。在btn_Search_Click 事件中,您正在填写本地dtgrv_Device_PageIndexChanging 事件没有得到任何行,因为它访问了全局变量。两者都是不同的变量。

    【讨论】:

    • 我这样做了,问题仍然存在。
    • 你能发布你的页面加载吗?
    • 我认为这个问题与 gridview 数据源有关,这就是我将 dt 数据表定义为全局的原因。但问题依然存在
    【解决方案2】:

    答案是对大敌发表评论! 这是我的页面加载它包含在程序的其他部分使用的东西:

    protected void Page_Load(object sender, EventArgs e)
        {
    
            btn_Edit.Enabled=false ;
            lbl_error.Visible = false;
            if (!Convert.ToBoolean(Session["logedin"]))
            {
                Response.Redirect("Default.aspx");
            }
            hiddenitems.Visible = false;
            if (Page.IsPostBack)
            {   btn_Search.Visible = true;
                lbtn_advacedsearch.Visible = true;
    
                drp_Property.Visible = true;
                txt_pvalue.Visible = true;
                Label5.Visible = true;
                Label4.Visible = true;
    
    
            }
    
            img_Logo.Visible = false;
            //imgLogo.Src = "pics/Manufacturer_Logo/selectmodel.jpg";
            SqlConnectionStringBuilder kcestring = new SqlConnectionStringBuilder();
            kcestring.DataSource = @"localhost";
            kcestring.InitialCatalog = "KCE";
            kcestring.UserID="sa";
            kcestring.Password="123";
            //kcestring.IntegratedSecurity = true;
            SqlDataAdapter empper = new SqlDataAdapter("sp_GetEmployeepermissionsByID", kcestring.ToString());
            SqlParameter employeeID = new SqlParameter("employeeID", SqlDbType.BigInt);
            employeeID.Value = Session["employeeid"];
    
            empper.SelectCommand.Parameters.Add(employeeID);
            empper.SelectCommand.CommandType = CommandType.StoredProcedure;
            DataTable da = new DataTable();
            empper.Fill(da);
    
        }
    

    【讨论】:

      【解决方案3】:

      PageIndexChanging中使用此代码:

      {
          GridView1.PageIndex = e.NewPageIndex;
          SqlCommand cmd = new SqlCommand("Select * from Requseted_movie ORDER BY [ID] DESC", con);
      
          SqlDataAdapter DA1 = new SqlDataAdapter(cmd);
          DA1.Fill(DT1);
      
          GridView1.DataSource = DT1;
          GridView1.DataBind();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-28
        • 1970-01-01
        • 1970-01-01
        • 2012-01-21
        • 1970-01-01
        • 2012-02-05
        相关资源
        最近更新 更多