最近我遇到了一个问题。这个问题虽然不会影响我的过程,但如果解决了,GUI 看起来会很好。
问题是......我有一个搜索屏幕,其中根据搜索条件过滤了一些记录,这些记录显示在定义了一些 ItemTemplate 的网格视图中。我的问题是网格的长度正在根据网格中的记录数进行调整。我需要有一个恒定的网格高度,以便我的页面长度对于所有搜索都保持不变。只有当用户希望每页显示超过 10 条记录时,才应增加此高度。
请帮我解决这个问题。
因为您的要求是: 您有一个按钮说“显示更多”,单击时会显示下一个 10 行。
一种方法是使用List
ofobjects
然后调用List<T>.GetRange()
方法。Take(n)
如果您已经在使用它,您还可以使用扩展名 in仅返回所需数量的记录LINQ
。我有 CountToDisplay
一个变量来保存当前要显示的记录数,最初设置为 0(零)
GetEmployees
方法
protected List<Employee> GetEmployees(int CountToDisplay)
{
List<Employee> employees= new List<employee>();
// Sample code to fill the List. Use the `Take` Extension
dbDataContext db = new dbDataContext();
var e= ( from c in db.Employees
select c ).Take(CountToDisplay);
//iterate through results and add to List<Employee>
foreach(var c in e)
{
employee emp = new employee { name = c.name, address = c.address };
employees.Add(emp);
}
return employees;
}
这Employee
是一个类:
public class Employee
{
public string name;
public string address;
}
现在是有趣的部分。假设您有一个“显示更多”按钮,单击时会显示下一个 10 行。这种情况一直持续到你到达终点。因此,在我的情况下,我使用了链接按钮,并在单击加载和刷新网格时使用了服务器方法。
<asp:LinkButton ID="btnShowMore" class="ShowMoreLink" runat="server"
OnClick="ShowMoreResults"></asp:LinkButton>
这是ShowMoreResults
功能:
private void ShowMoreResults()
{
// Keep incrementing with the Minimum rows to be displayed, 5, 10 ...
CountToDisplay = CountToDisplay +
Convert.ToInt16(WebConfigurationManager.AppSettings["EmpGridViewMinCount"]);
// finally called the Grid refresh method
RefreshGrid();
}
网格刷新方法:
private void RefreshGrid()
{
List<Employee> employees = GetEmployees(CountToDisplay)
if (employees != null)
{
empGrid.DataSource = employees;
}
// **Hide the ShowMore link in case Count to display exceeds the total record.**
btnShowMore.Visible = employees.Count > CountToDisplay;
// Finally bind the GridView
empGrid.DataBind();
}