如题用了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; 第一页还没问题,翻页以后就取不到值了
求大佬帮忙

解决方案 »

  1.   

    定义输出的列内容,首先在模板设计代码中使用 Eval 来进行绑定(绑定 ondblclick 的代码)。先按照最标准的规范来编程,不要在服务器端代码里乱取数据(此时许多数据根本还没有到该赋值的时候)。
      

  2.   

    找一本正规的、推荐的 asp.net 入门书。你的代码可以看出你是自己乱猜的,不是按照教程正规学的 asp.net 原理。
      

  3.   

    在正规的 asp.net 教程中,基本原理的正规说明告诉你了数据结构,e.Row.DataItem这个是所绑定的对象,而如果你设置了键值则可以从GridView1.DataKeys[e.Row.DataItemIndex];这类地方也可以去查找键值。
      

  4.   

    bing()和GridView1.DataSource = JL; GridView1.DataBind();本来就没什么区别啊数据源用不同的方法赋值不可以?
    还是说string id = e.Row.Cells[0].Text; 句有问题?那你给个翻页后取值的句子啊
      

  5.   

    你可以翻翻看你的 asp.net 教程,如果没有重点介绍,那么我建议你把教程扔掉。学教程的好处就是通过对原理和数据结构设计的学习,当遇到了实际问题,你知道到哪里去找。不会像那些纯粹“自学”的人一样去盲目乱猜地胡乱编程。
      

  6.   

    对于 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# 代码你就得先把底层的原理和数据结构搞懂,不能乱猜数据来源。
      

  7.   

    感觉很说的不一样啊,我是要做双击跳转到详情页,需要取到双击行的记录id,是放在第一列的所以写了e.Row.Cells[0].Text;
      

  8.   

                    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”。
      

  9.   

    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();
    就可以取到值了
    最讨厌你们这群说话说一半的人装什么优越感,吔屎嘞