DataGrid 记录定位问题

apengyun 2004-11-22 12:50:09
现在想实现这样一个功能:页面上有一个自定义分页的dataGrid,每次进入页面都会带一个keyid来定位数据库中的某一条记录,现在想每次显示的时候,能够在datagrid中准确定位,也就是选中这一条记录,并且当前页面的页数也要求是正确的。例如:现在我选中datagrid中的一条记录,将他的id取出来,到另外一个页面修改,修改完成后,回到这个页面。用户看到datagrid这个页面时,该记录被更新而且被选中。如果该记录被删除,则选中他的下一条。如果是新增的记录,则定位到新增的记录上。
此时页次可能不是原来的页次,但一定是分页后的正常的页次,即原来是第三页,现在可能是第二页,或者第四页。使用的是oracle数据库。目前分页语句是这样的:
select * from (select *,rownum as myrowno from( select * from dual order by id desc--正常的select 语句 ) where ronum<110 ) where myrowno>100.
不知道说清楚了没有。盼望大侠解决。
...全文
262 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxwnet 2004-11-29
  • 打赏
  • 举报
回复
学习
plmokn719 2004-11-29
  • 打赏
  • 举报
回复
up
look4sword 2004-11-29
  • 打赏
  • 举报
回复
用SQL分页也许可以.
定位页可以先得到记录的位置,再除以每页的个数.
删掉一个就movenext.增加就movelast.
learner01 2004-11-29
  • 打赏
  • 举报
回复
up!
吐司vivi 2004-11-29
  • 打赏
  • 举报
回复
不是很明白 用datagrid自带的分页,把当前页号传过去,直接索定datagrid得页码不成吗
goody9807 2004-11-29
  • 打赏
  • 举报
回复
这个问题的关键是从数据库返回的结果只有一页,如何保证操作的纪录正好在这一页里面。
=================
没明白

既然只有一页 就无需定位了啊 是不是写错了
talenty 2004-11-29
  • 打赏
  • 举报
回复
up and thinking
apengyun 2004-11-28
  • 打赏
  • 举报
回复
up
apengyun 2004-11-23
  • 打赏
  • 举报
回复
自己顶
wuzhijie 2004-11-22
  • 打赏
  • 举报
回复
不是很理解,UP
Jack2013tong 2004-11-22
  • 打赏
  • 举报
回复
UP
apengyun 2004-11-22
  • 打赏
  • 举报
回复
up有分。
分不够另开新贴散分
apengyun 2004-11-22
  • 打赏
  • 举报
回复
谢谢goody9807() 。
我是使用reader来作为datasource的。如果使用dataset这也就不成问题。这个问题的关键是从数据库返回的结果只有一页,如何保证操作的纪录正好在这一页里面。
我的初步想法是先找出该纪录所在的页面,再来读取纪录,然后绑定。问题是在这个时间差内,这条记录的位置会发生改变,就是所在的页面发生变化。
goody9807 2004-11-22
  • 打赏
  • 举报
回复
'得到数据视图,参数为要排序的列
Private Function GetDv(ByVal strSort As String) As DataView
'定义数据库连接
Dim dv As DataView
Dim CN As New SqlConnection()
Try
'初始化连接字符串
CN.ConnectionString = "data source=pmserver;
initial catalog=Northwind;persist security info=False;user id=sa;Password=sa;"
CN.Open()
'从NorthWind得到orders表的数据
Dim adp As SqlDataAdapter = New SqlDataAdapter("select * from orders", CN)
Dim ds As New DataSet()
adp.Fill(ds)
'得到数据视图
dv = ds.Tables(0).DefaultView
Catch ex As Exception
#If DEBUG Then
Session("Error") = ex.ToString()
Response.Redirect("../error.aspx") '跳转程序的公共错误处理页面
#End If
Finally
'关闭连接
CN.Close()
End Try
'排序
dv.Sort = strSort
Return dv
End Function

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
If Not IsPostBack Then
ViewState("strSort") = "orderid"
dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
dgOrder.DataBind()
End If
End Sub
'排序
Private Sub dgOrder_SortCommand(ByVal source As Object,
ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles dgOrder.SortCommand
dgOrder.CurrentPageIndex = 0
'得到排序的列
ViewState("strSort") = e.SortExpression.ToString()
dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
dgOrder.DataBind()
End Sub

'分页
Private Sub dgOrder_PageIndexChanged(ByVal source As Object,
ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dgOrder.PageIndexChanged
'得到分页的页号
dgOrder.CurrentPageIndex = e.NewPageIndex
dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
dgOrder.DataBind()
End Sub

goody9807 2004-11-22
  • 打赏
  • 举报
回复
<form id="Form1" method="post" runat="server">
<asp:datagrid id="dgOrder" runat="server" Height="515px" Width="718px" AutoGenerateColumns="False" AllowSorting="True" CellPadding="4" BorderWidth="1px" BorderColor="#A0ABEB" PageSize="15" BorderStyle="Solid" BackColor="White" GridLines="Vertical" ForeColor="Black" AllowPaging="True" ShowFooter="True">
<SelectedItemStyle ForeColor="White" BackColor="Black"></SelectedItemStyle>
<AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
<HeaderStyle HorizontalAlign="Center" ForeColor="White" BorderColor="#6876C5" BackColor="#6876C5"></HeaderStyle>
<FooterStyle ForeColor="White" BackColor="#6876C5"></FooterStyle>
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<FONT face="">
<asp:CheckBox id="Cb" runat="server"></asp:CheckBox></FONT>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="orderid" SortExpression="orderid" HeaderText="ID">
<HeaderStyle Width="180px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="ShipCountry" SortExpression="ShipCountry" HeaderText="ShipCountry">
<HeaderStyle Width="180px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="ShippedDate" SortExpression="ShippedDate" HeaderText="ShippedDate" DataFormatString="{0:d}">
<HeaderStyle Width="180px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="Freight" SortExpression="Freight" HeaderText="Freight">
<HeaderStyle Width="180px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="ShipAddress" SortExpression="ShipAddress" HeaderText="ShipAddress">
<HeaderStyle Width="480px"></HeaderStyle>
</asp:BoundColumn>
</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="Black" Position="TopAndBottom" BackColor="White" Mode="NumericPages"></PagerStyle>
</asp:datagrid>
</form>
dejun1981 2004-11-22
  • 打赏
  • 举报
回复
ding
learner01 2004-11-22
  • 打赏
  • 举报
回复
up!

62,068

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧