"未将对象引用设置到对象的实例"的问题(贴上原码)
错误:
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
行 98:break;
行 99:}
行 100:typelist.DataSource = db.creatDS().Tables["newsType"].DefaultView;//db.RunDS("select * from tb_NewsType","newsType");
行 101:typelist.DataBind();
行 102:cc.Text = "当前第" + ((int)typelist.CurrentPageIndex + 1) + "页";
----------------代码如下:---------------------
类:
public class DataBase
{
......
//creatDS()
public DataSet creatDS()
{
SqlConnection Conn;
Conn = new SqlConnection(ConnStr);
Conn.Open();
DataSet Dset = new DataSet();
return Dset;
}
//返回dataSet
public DataSet RunDS(string SQL,string tableName)
{
SqlConnection Conn;
Conn = new SqlConnection(ConnStr);
Conn.Open();
DataSet Ds = new DataSet();
SqlDataAdapter Da;
Da = new SqlDataAdapter(SQL,Conn);
try
{
Da.Fill(Ds,tableName);
}
catch(Exception Err)
{
throw Err;
}
Dispose(Conn);
return Ds;
}
......
}
----------------------引用(就是出错的代码)-------------------------------
private DataBase db = new DataBase();
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
typelist.DataSource = db.RunDS("select * from tb_NewsType","newsType");
typelist.DataBind();
}
}
public void PagerButtonClick(object sender, System.EventArgs e)
{
...........
//下面这行出错
typelist.DataSource = db.creatDS().Tables["newsType"].DefaultView;//db.RunDS("select * from tb_NewsType","newsType");
typelist.DataBind();
cc.Text = "当前第" + ((int)typelist.CurrentPageIndex + 1) + "页";
pc.Text = "总页数" + (typelist.PageCount);
}
}
初学.net请帮忙!
我前面对ds已经实例化过了!database ds = new database()
PagerButtonClick()这个分页函数,因为前面在page_load()里是建过DataSet
db.RunDS("select * from tb_NewsType","newsType");所以我想在这个分页函数里用这个视图里的“newsType”,请问这个出错的原因及解决办法!谢谢
问题点数:20、回复次数:5Top
1 楼flyye_cs(一叶孤舟)回复于 2005-04-03 15:32:00 得分 10
试试
typelist.DataSource = db.RunDS("select * from tb_NewsType","newsType").Tables["newsType"].DefaultView;Top
2 楼afeiflyinsky(小飞)回复于 2005-04-03 15:44:08 得分 0
/引用/回复人: flyye_cs(一叶孤舟)
typelist.DataSource = db.RunDS("select * from tb_NewsType","newsType").Tables["newsType"].DefaultView;
/引用结束/
你这种方法我用过的,是对的!
原因是我在搜索的时候sql语句是变过的
public void search_Click(object sender, System.EventArgs e)
{
String keyWord = keyword.Text;
String strSql = "select * from tb_NewsType where newsTypeName like '%" + keyWord + "%'";
typelist.CurrentPageIndex = 0;
typelist.DataSource = db.RunDS(strSql,"newsType");
typelist.DataBind();
}
此时的分页应该是搜索结果的“newsType”,你给我的这种方法相当于是我搜索之后分页还是整个数据集的分页,这样就不对了。
我的想法是,因为我在搜索之后建立的DataSet中建立的表newsType,在page_load刚开始的地方也用"newsType"!这样我搜索之后和没搜索之前的分页就会不一样!
还有别的办法吗?Top
3 楼afeiflyinsky(小飞)回复于 2005-04-03 16:44:37 得分 0
upTop
4 楼afeiflyinsky(小飞)回复于 2005-04-04 09:51:58 得分 0
帮忙看一下Top
5 楼flyye_cs(一叶孤舟)回复于 2005-04-04 10:49:55 得分 10
public void search_Click(object sender, System.EventArgs e)
{
string keyWord = keyword.Text;
string strSql = "select * from tb_NewsType where newsTypeName like '%" + keyWord + "%'";
typelist.CurrentPageIndex = 0;
typelist.DataSource = db.RunDS(strSql,"newsType").Tables["newsType"].DefaultView;
typelist.DataBind();
}
Top




