标题:datagrid分页的问题(见12楼)
只看楼主
beblue
Rank: 1
等 级:新手上路
帖 子:182
专家分:0
注 册:2007-3-24
 问题点数:0 回复次数:14 
datagrid分页的问题(见12楼)

aspx代码如下

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Debug="true" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<asp:DataGrid ID="dg" runat="server" AutoGenerateColumns="true" OnSortCommand="gridsort" AllowPaging="true" AllowSorting="true"
PageSize="3" PagerStyle-NextPageText="下一页" PagerStyle-PrevPageText="上一页" OnPageIndexChanged="changepage"
CellPadding="2" CellSpacing="2" BorderColor="black" BorderWidth="1" Font-Names="vandana" BorderStyle="solid" Font-Size="x-small" >
<AlternatingItemStyle BackColor="paleGoldenrod" />
<ItemStyle BackColor="beige" />
</asp:DataGrid>
<asp:Label ID="pagenumber" runat="server" />
<asp:Label ID="totalnumber" runat="server" />
</form>
</body>
</html>



.cs代码如下
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
protected string strConnString = "Data Source=127.0.0.1;uid=sa;pwd=;Initial Catalog=chapter;";
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack) bindgrid();
}
public void gridsort(object serder, DataGridSortCommandEventArgs e)
{
Session["sortexpression"] = e.SortExpression;
bindgrid();

}
public void changepage(object serder,DataGridPageChangedEventArgs e)
{
dg.CurrentPageIndex = e.NewPageIndex;
pagenumber.Text = "第" + dg.CurrentPageIndex + "页";
bindgrid();
}

public void bindgrid()
{
int total;
SqlConnection sqlconn = new SqlConnection(strConnString);
SqlDataAdapter sqld=new SqlDataAdapter ("select * from student", strConnString);
DataSet ds = new DataSet();
sqlconn.Open();
sqld.Fill(ds, "tabstud");
total = ds.Tables["tabstud"].Rows.Count;
totalnumber.Text="共"+((total-total%dg.PageSize)/dg.PageSize+1).ToString()+"页";
if (total == 0)
{
pagenumber.Text = "没有可以显示的记录";
return;
}
if (Session["sortexpression"] != "")
{
DataTable dtable = ds.Tables["tabstud"];
DataView dview = new DataView(dtable);
dview.Sort = Session["sortexpression"].ToString();
dg.DataSource = dview;
}
else dg.DataSource = ds.Tables["tabstud"];
dg.DataBind();
sqlconn.Close();
sqlconn = null;
}

}


提示错误如下
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 49: DataTable dtable = ds.Tables["tabstud"];
行 50: DataView dview = new DataView(dtable);
行 51: dview.Sort = Session["sortexpression"].ToString();
行 52: dg.DataSource = dview;
行 53: }

帅哥美女们帮我看看错在哪了

[此贴子已经被作者于2007-6-1 23:34:47编辑过]

搜索更多相关主题的帖子: datagrid xhtml runat server 
2007-05-25 00:07
makewelldone
Rank: 1
来 自:江苏南京
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-9-25
得分:0 
是不是你的SESSION有问题,你睢里面是不是为空?如果是,那么就错了,你可以用LABEL对角来测试一下就知道了。
2007-05-25 08:59
beblue
Rank: 1
等 级:新手上路
帖 子:182
专家分:0
注 册:2007-3-24
得分:0 
嗯,我用label测了一下,果然是session的问题  未将对象引用设置到对象的实例,,,,那应该怎么赋值啊

继续向前-------------------努力成为高手
2007-05-25 09:22
beblue
Rank: 1
等 级:新手上路
帖 子:182
专家分:0
注 册:2007-3-24
得分:0 
版主们进来看看啊,,

继续向前-------------------努力成为高手
2007-05-25 12:10
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 
if (!Page.IsPostBack) bindgrid();
这下面加个 Session["sortexpression"] = null;

飘过~~
2007-05-25 12:16
beblue
Rank: 1
等 级:新手上路
帖 子:182
专家分:0
注 册:2007-3-24
得分:0 

终于盼到你来了,


加了还是提示那个错误啊

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 51: DataTable dtable = ds.Tables["tabstud"];
行 52: DataView dview = new DataView(dtable);
行 53: dview.Sort = Session["sortexpression"].ToString();
行 54: dg.DataSource = dview;
行 55: }

53红色



再帮忙想瞧瞧


继续向前-------------------努力成为高手
2007-05-25 12:42
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 
那你先不要用Session吧.定义一个全局变量..把这个e.NewPageIndex的值放到里面.再引用..试试看

飘过~~
2007-05-25 13:03
song13
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-5-17
得分:0 

今天我也碰到类似问题,发现不能用Session["sortexpression"] != "" 来判断是否为空,因为没给session变量赋值之前它是不存在的,
应该用 IsNothing(Session["sortexpression"] )来判断sortexpression是否为空。

[此贴子已经被作者于2007-5-28 23:01:47编辑过]

2007-05-28 22:39
冰残剑
Rank: 1
等 级:新手上路
威 望:2
帖 子:179
专家分:0
注 册:2006-3-6
得分:0 
if(Session["sortexpression"] != null)
{
if(Session["sortexpression"] != "")
...
}

剑雪无情冰封流 残阳血照
2007-05-29 14:23
song13
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-5-17
得分:0 

回9楼,这样可能也是行不通的,因为Session["sortexpression"]根本就不存在,
所以才出现异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
所以根本就不能进行Session["sortexpression"] != null的判断。

2007-05-29 15:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-142317-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.296864 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved