根据下拉列表中的选定值在 Gridview 中显示行数

Showing No of Rows in Gridview according to Selected value from Dropdown

让,我已经从数据库中检索了必要的信息,使用一个网格视图来显示该信息,并且成功完成了。

现在我想做类似的事情,使用一个包含一些数字的下拉菜单。

根据从下拉列表中选择的值,我只想在网格视图中显示那些没有的记录。比如如果我从数据库中检索了 100 条记录并且只想显示其中的 30 条。

可以吗??

如果是,请提出任何解决方案..

我对grid-view不是很熟悉,坦白说没试过这个功能。

这里是隐藏代码:

// 它加载 gridview

   public void fillGrid()
   {
    lbl_hldId.Text = Request.QueryString["qname"].ToString();
    clsUserTB objuser = new clsUserTB();
    objuser.User_Id = (lbl_hldId.Text).ToString();
    objuser.ex_Date = DateTime.Now;
    DataSet ds = clsAdminLogic.empMonthLogs(objuser);
    lbl_Id.Text = ds.Tables[0].Rows[0]["User_Id"].ToString();
    lbl_name.Text = ds.Tables[0].Rows[0]["Name"].ToString();
    lbl_contact.Text = ds.Tables[0].Rows[0]["Contact"].ToString();
    grdv_mnthRec.Visible = true;
    grdv_mnthRec.DataSource = ds;
    grdv_mnthRec.DataBind();
    if (Convert.ToInt32(ddl_digits.SelectedItem.ToString()) != null)
        grdv_mnthRec.PageSize = Convert.ToInt32(ddl_digits.SelectedValue);
}

//寻呼事件

protected void grdv_mnthRec_PageIndexChanging1(object sender, GridViewPageEventArgs e)
   {
     grdv_mnthRec.PageIndex = e.NewPageIndex;
     grdv_mnthRec.DataBind();
     fillGrid();
   }

//下拉索引变化事件

protected void ddl_digits_SelectedIndexChanged(object sender, EventArgs e)
{
   fillGrid();
}

如果我做错了什么..那么请告诉我

你想:

1.) 只限制显示的行数,没有更多链接 (无分页)查看下一组记录?检查 方法 I

2.) 将 PageSize 设置为在下拉列表中选择的值来实现 GridView 分页功能?检查方法二

方法 I:: 无分页

protected void ddl_digits_SelectedIndexChanged(object sender, EventArgs e)
{
   int maxRecordsToDisplay = Convert.ToInt32(ddl_digits.SelectedValue);
   fillGrid(maxRecordsToDisplay, false);
}

以及您的 FillGrid 方法:

public void fillGrid(int maxRecordsToDisplay, bool paging)
{
 DataSet ds = clsAdminLogic.empMonthLogs(objuser);

// if NO paging is required, filter the rows in dataset
 if(!paging) 
 {
 IEnumerable<DataRow> filteredRecords= ds.Tables[0].AsEnumerable().Take(maxRecordsToDisplay);
 grdv_mnthRec.DataSource = filteredRecords.AsDataView();
 }
 // if paging is enabled, set the PageSize property
 else 
   {
      GridView1.PageSize = maxRecordsToDisplay;
      grdv_mnthRec.DataSource = ds;
   }

      grdv_mnthRec.DataBind();
}

方法二:启用分页后,fillgrid()方法与上面相同

<asp:gridview id="grdv_mnthRec" runat="server" allowpaging="True" ../>

//寻呼事件

protected void grdv_mnthRec_PageIndexChanging1(object sender, GridViewPageEventArgs e)
   {
     grdv_mnthRec.PageIndex = e.NewPageIndex;
     int maxRecordsToDisplay = Convert.ToInt32(ddl_digits.SelectedValue);
     fillGrid(maxRecordsToDisplay, true);
   }

//下拉列表选择的索引改变事件

protected void ddl_digits_SelectedIndexChanged(object sender, EventArgs e)
{
   int maxRecordsToDisplay = Convert.ToInt32(ddl_digits.SelectedValue);
   fillGrid(maxRecordsToDisplay, true);
}

你可以试试这个:-

protected void Page_Load(object sender, EventArgs e)
{

    if (!IsPostBack)
    {
        fillGrid();
        ddl.Items.Insert(0, ("Select"));
    }
}
int size = 0;
public void fillGrid()
{
    lbl_hldId.Text = Request.QueryString["qname"].ToString();
    clsUserTB objuser = new clsUserTB();
    objuser.User_Id = (lbl_hldId.Text).ToString();
    objuser.ex_Date = DateTime.Now;
    DataSet ds = clsAdminLogic.empMonthLogs(objuser);
    lbl_Id.Text = ds.Tables[0].Rows[0]["User_Id"].ToString();
    lbl_name.Text = ds.Tables[0].Rows[0]["Name"].ToString();
    lbl_contact.Text = ds.Tables[0].Rows[0]["Contact"].ToString();
    grdv_mnthRec.Visible = true;
    grdv_mnthRec.DataSource = ds;
    grdv_mnthRec.DataBind();
}
protected void grdv_mnthRec_PageIndexChanging1(object sender, GridViewPageEventArgs e)
{
    grdv_mnthRec.PageIndex = e.NewPageIndex;
    grdv_mnthRec.DataBind();
    fillGrid();
}
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
    if (ddl.SelectedIndex!=0)
    {
        size = int.Parse(ddl.SelectedItem.Value.ToString());
        grdv_mnthRec.PageSize = size;
        fillGrid();
    }
    else
    {
        size = 10;
    }
}