asp.net的gridview自动分页,翻页后取值问题

qq_42713711 2018-07-17 09:05:07
如题用了gridview自带的分页代码
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataSource = JL;
GridView1.DataBind();
}
然后在RowDataBound中
if (e.Row.RowType == DataControlRowType.DataRow)
{
string id = e.Row.Cells[0].Text;
e.Row.Attributes.Add("ondblclick", "location.href='../record/detail.aspx?Id=" + id + "'");
}
e.Row.Cells[0].Text; 第一页还没问题,翻页以后就取不到值了
求大佬帮忙
...全文
424 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_42713711 2018-07-18
  • 打赏
  • 举报
回复
rotected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
事件中
if (e.Row.RowType == DataControlRowType.DataRow)

e.Row.Cells[x].Text;在取值列隐藏的情况下是取不到值的。
在前台gridview里加DataKeyNames="xxx",xxx为取值列名
后台
string x = GridView1.DataKeys[e.Row.RowIndex].Values["xxx"].ToString();
或string x = DataBinder.Eval(e.Row.DataItem, "xxx").ToString();
就可以取到值了
最讨厌你们这群说话说一半的人装什么优越感,吔屎嘞

引用 5 楼 sp1234 的回复:
在正规的 asp.net 教程中,基本原理的正规说明告诉你了数据结构,
e.Row.DataItem
这个是所绑定的对象,而如果你设置了键值则可以从
GridView1.DataKeys[e.Row.DataItemIndex];
这类地方也可以去查找键值。
qq_42713711 2018-07-17
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
在正规的 asp.net 教程中,基本原理的正规说明告诉你了数据结构,
e.Row.DataItem
这个是所绑定的对象,而如果你设置了键值则可以从
GridView1.DataKeys[e.Row.DataItemIndex];
这类地方也可以去查找键值。

string id = DataBinder.Eval(e.Row.DataItem, "id").ToString();
DataRowView drv = (DataRowView)e.Row.DataItem;
string id = drv["ID"].ToString();
不行啊报错,DataBinding:“MODEL.record”不包含名为“id”的属性。
无法将类型为“MODEL.record”的对象强制转换为类型“System.Data.DataRowView”。
qq_42713711 2018-07-17
  • 打赏
  • 举报
回复
引用 8 楼 sp1234 的回复:
对于 Eval 数据绑定来说,你可以自由地设计输出的 htm,例如在列 Template 中可以设计
<asp:Button ID="Button1" runat="server" Text="填报" Visible='<%# GetStatus((string)Eval("DataID"), (int)Eval("ETXA"))=="填报" %>' 
随便自定义属性='<%# GetABC((string)Eval("DataID")) %>'
OnClick="Button1_Click" />

这里就为输出的<input type="button"> 元素自定义了一个“随便自定义属性”的属性,然后可以用页面上的
protected string GetABC(string key)
{
return .........
}
来计算任意复杂的输出文本(比如说一个 url)。

首选地是学会设计模板,而不是写什么 c# 代码。要写 c# 代码你就得先把底层的原理和数据结构搞懂,不能乱猜数据来源。

感觉很说的不一样啊,我是要做双击跳转到详情页,需要取到双击行的记录id,是放在第一列的所以写了e.Row.Cells[0].Text;
  • 打赏
  • 举报
回复
对于 Eval 数据绑定来说,你可以自由地设计输出的 htm,例如在列 Template 中可以设计
<asp:Button ID="Button1" runat="server" Text="填报" Visible='<%# GetStatus((string)Eval("DataID"), (int)Eval("ETXA"))=="填报" %>' 
随便自定义属性='<%# GetABC((string)Eval("DataID")) %>'
OnClick="Button1_Click" />

这里就为输出的<input type="button"> 元素自定义了一个“随便自定义属性”的属性,然后可以用页面上的
protected string GetABC(string key)
{
return .........
}
来计算任意复杂的输出文本(比如说一个 url)。

首选地是学会设计模板,而不是写什么 c# 代码。要写 c# 代码你就得先把底层的原理和数据结构搞懂,不能乱猜数据来源。
  • 打赏
  • 举报
回复
你可以翻翻看你的 asp.net 教程,如果没有重点介绍,那么我建议你把教程扔掉。

学教程的好处就是通过对原理和数据结构设计的学习,当遇到了实际问题,你知道到哪里去找。不会像那些纯粹“自学”的人一样去盲目乱猜地胡乱编程。
qq_42713711 2018-07-17
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
找一本正规的、推荐的 asp.net 入门书。你的代码可以看出你是自己乱猜的,不是按照教程正规学的 asp.net 原理。

bing()和GridView1.DataSource = JL; GridView1.DataBind();本来就没什么区别啊数据源用不同的方法赋值不可以?
还是说string id = e.Row.Cells[0].Text; 句有问题?那你给个翻页后取值的句子啊
  • 打赏
  • 举报
回复
在正规的 asp.net 教程中,基本原理的正规说明告诉你了数据结构,
e.Row.DataItem
这个是所绑定的对象,而如果你设置了键值则可以从
GridView1.DataKeys[e.Row.DataItemIndex];
这类地方也可以去查找键值。
qq_42713711 2018-07-17
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
定义输出的列内容,首先在模板设计代码中使用 Eval 来进行绑定(绑定 ondblclick 的代码)。先按照最标准的规范来编程,不要在服务器端代码里乱取数据(此时许多数据根本还没有到该赋值的时候)。

求具体方法,还有这些代码也都是在网上看的
  • 打赏
  • 举报
回复
找一本正规的、推荐的 asp.net 入门书。你的代码可以看出你是自己乱猜的,不是按照教程正规学的 asp.net 原理。
  • 打赏
  • 举报
回复
定义输出的列内容,首先在模板设计代码中使用 Eval 来进行绑定(绑定 ondblclick 的代码)。先按照最标准的规范来编程,不要在服务器端代码里乱取数据(此时许多数据根本还没有到该赋值的时候)。
qq_42713711 2018-07-17
  • 打赏
  • 举报
回复
我是不是发错区了……

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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