- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有包含大量记录的gridview,因此必须使用ObjectDataSource以便仅获取将在页面上显示的记录,即如果总共有100条记录,并且页面大小为10,则在每个页面上仅单击10记录是从数据库中获取的。请找到下面的代码
///aspx
<asp:GridView ID="grdModulesList" CssClass="moduleList" runat="server"
AutoGenerateColumns="False" HeaderStyle-Font-Size="Smaller"
Font-Size="Small" AllowPaging="true" AllowSorting="True" OnRowCreated="grdModulesList_RowCreated"
OnRowDataBound="grdModulesList_RowDataBound" BackColor="White" BorderColor="Blue"
BorderStyle="None" BorderWidth="1px" CellPadding="3" PageSize="20">
<Columns>
<asp:BoundField DataField="collection_id" Visible="False" />
<asp:BoundField HeaderText="Item" />
<asp:BoundField HeaderText="Module Name" DataField="module_name" SortExpression="module_name"
ControlStyle-CssClass="moduleName" />
<asp:BoundField HeaderText="File Name" DataField="module_file_name" SortExpression="module_file_name" />
<asp:BoundField HeaderText="ID" DataField="defect_number" SortExpression="defect_number" />
<asp:BoundField HeaderText="Actions" />
</Columns>
<RowStyle BorderColor="Blue" BorderStyle="Solid" CssClass="grid_width" BorderWidth="2px"
Height="20px" />
<PagerStyle BackColor="#FFFF99" ForeColor="Red" HorizontalAlign="Center" Height="20px" />
<FooterStyle ForeColor="black" Font-Bold="true" />
<SelectedRowStyle Font-Size="Smaller" />
<HeaderStyle Font-Size="Smaller" BorderStyle="Solid" BackColor="Gold" Font-Bold="True"
ForeColor="Black" Height="30px" />
<AlternatingRowStyle BorderColor="#3366FF" BorderStyle="Solid" BorderWidth="1px" />
</asp:GridView>
//.aspx.cs
ObjectDataSource ods = new ObjectDataSource();
ods.ID = "ods";
ods.SelectMethod = "GRAD_ModuleListforCollection_Subset"; //method to fetch records from DB
ods.EnablePaging = true;
ods.TypeName = "pmAdmin.classes.data.ApplicationData";
ods.StartRowIndexParameterName = "StartRecord";
ods.MaximumRowsParameterName = "PageSize";
ods.SortParameterName = "SortBy";
ods.SelectCountMethod = "GRAD_Total_Modules";
Parameter p1 = new Parameter("userID", TypeCode.String, userId);
ods.SelectParameters.Add(p1);
panelModuleList.Controls.Add(ods); //add objectDatasource control to a panel
grdModulesList.DataSourceID = ods.ID;
grdModulesList.DataBind();
//方法GRAD_ModuleListforCollection_Subset
public System.Data.DataSet GRAD_ModuleListforCollection_Subset(string userID, int StartRecord, int PageSize, string SortBy)
{}
记录已正确绑定(bind)到 Gridview,但问题是用于从数据库获取记录的方法,即每次点击页面时都会调用GRAD_ModuleListforCollection_Subset 两次。示例:如果我单击第 2 页,则会调用该方法() 第一次 startRecord=0,pagesize=20() 第二次调用 startRecord=20,pagesize=20
点击第2页后,如果我点击第3页() 第一次使用 startRecord=20,pagesize=20() 第二次调用 startRecord=40,pagesize=20
对于每次页面点击,第一次加载都有以前的值。
请帮我解决这个问题。
提前致谢。
最佳答案
进行了以下更改以使其正常工作
启用 objectDatasource 缓存
ods.EnableCaching = true;
设置 session [“排序顺序”]
grdModulesList.DataSourceID = ods.ID;
grdModulesList.DataBind();
if (Session["sortorder"] == null)
Session["sortorder"] = "Ascending";
添加gridview排序事件
protected void grdModulesList_Sorting(对象发送者,GridViewSortEventArgs e){ ods.SelectParameters["SortBy"].DefaultValue = GetSortExpr(e.SortExpression); e.取消=真;//我们必须这样做,否则我们会得到一个异常}
public string GetSortExpr(string sortExp)
{
if (Session["sortorder"].ToString() == "Ascending")
{
Session["sortorder"] = "Descending";
return sortExp + " DESC";
}
else
{
Session["sortorder"] = "Ascending";
return sortExp + " ASC";
}
}
关于asp.net - gridview + objectdatasource select方法调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17923226/
我有一个启用编辑的 GridView ,所以当我编辑用户时出现错误: ObjectDataSource 'ObjectDataSource1' 找不到具有参数的非泛型方法 'Update': 我还使用
在我的 C# .NET Web 应用程序中,我有一个绑定(bind)到 ObjectDataSource 的 GridView。此 ObjectDataSource 使用我的 App_Code 文件夹
我正在开发 asp.net 3.5 项目。 当我想用 DetailsView 插入时,出现了这个错误: 错误:ObjectDataSource“ObjectDataSource2”找不到具有参数的非通
我有这个 ASP.NET 代码: 我的 DAL 代码: public DataTable GetBrokers(bool? hasImport=null) { SqlCommand cm
我正在使用 ObjectDataSource 来排序/分页/过滤,如下所示: 使用 ObjectDataSou
我有一个服务层公开了一些方法,这些方法在我的 asp.net 应用程序的 ObjectDataSource 中使用。 服务类的构造函数有一个参数,只是一个int,用于跟踪当前登录的用户: public
我的 ObjectDataSource 是这样实例化的: 选择、插入、更新方法如您所愿;选择所有数据,插入数据和更新数据。我的问题是,有没有办法可以分配另一种方法,例如第二个选择选择不同的数据或者可
我正在使用 visual studio 2008,我在 AppCode 文件夹中包含了一个类,并希望在 ObjectDataSource 中使用它的函数。 最佳答案 在 aspx 中 在 .cs
前台代码: 复制代码代码如下: <asp:GridView ID="viewIShow" runat="server"
我正在使用 ObjectDataSource 来执行 CRUD 操作。出于某种原因,我收到“ObjectDataSource‘ObjectDataSource1’没有要插入的值。检查‘values’字
如果网页需要一些数据,为什么不让 SQLDataSource 调用存储过程呢?为什么要使用 ObjectDataSource 调用业务对象,然后再调用存储过程?我知道基于 .net 框架构建的其他应用
我正在使用 GridView 处理 ASP.NET 页面和 ObjectDataSource . 我想针对我的业务层中的一个类(用 DataObject() 装饰)配置 ObjectDataSourc
我正在尝试将此绑定(bind)到gridview .. var source = from p in allComments select new { p.Img,
我有一个 GridView ,它绑定(bind)到一个从学生类型中选择数据的对象数据源 public class student { int id; string name; int
在我的公司中,很少有员工使用 ObjectDataSource。示例片段是: Sele
我正在将旧网站更新为更现代的外观。他们希望能够 CRUD 他们的数据表,这样用户就可以轻松地编辑/更新/删除内容,而无需转到特殊页面。 为此,我为他们的旧方法设置了一个 ObjectDataSourc
我有一个文本框,其值存储 ValidFrom 表单值: 31.01.2012 文化设置为: 在 web.config 中。 现在,ObjectDataSource 更新方法: public
如果下拉列表在范围内,我如何设置下拉列表的选定值Gridview 和下拉列表在编辑时由 objectdatasource 填充按钮被点击? 我的应用发生了什么情况是下拉列表被填充但第一项始终显示为选定
我无法从我的 C# 代码中找到简单问题的答案:如何手动清除 ObjectDataSource 缓存。在带有一些 DevExpress 组件的 Visual Studio 2010 中将 ASP.NET
我正在尝试使用启用分页的 ObjectDataSource。这需要我使用 SelectCountMethod(这样网格才能知道有多少页)。我的 ObjectDataSource 看起来像这样:
我是一名优秀的程序员,十分优秀!