根据下拉列表中的选定值在 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;
}
}
让,我已经从数据库中检索了必要的信息,使用一个网格视图来显示该信息,并且成功完成了。
现在我想做类似的事情,使用一个包含一些数字的下拉菜单。
根据从下拉列表中选择的值,我只想在网格视图中显示那些没有的记录。比如如果我从数据库中检索了 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;
}
}