//先定义ADO.NET对象
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(selectSQL, con);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);DataSet dsPubs = new DataSet(); (*)con.Open();
adapter.Fill(dsPubs, "Students"); //填充 DataSet最后在下拉列表框中定义入如下事件:
protected void DropDownList1_SelectedIndexChanged(……)
{
DataRow[] arrRow = dsPubs.Tables["Students"].Select("ID=" + DropDownList1.SelectedItem.Value);
…………
}如果(*)式没有写的话,在下拉列表框中选中相应的选项则可以从数据库中得到信息,并在Label标签中显示,但是如果定义了DataSet数据集dsPubs,则此时提示未将对象引用设置到对象的实例我想问的是,为什么预先定义和让系统自动定义数据集会产生这样的差别?
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(selectSQL, con);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);DataSet dsPubs = new DataSet(); (*)con.Open();
adapter.Fill(dsPubs, "Students"); //填充 DataSet最后在下拉列表框中定义入如下事件:
protected void DropDownList1_SelectedIndexChanged(……)
{
DataRow[] arrRow = dsPubs.Tables["Students"].Select("ID=" + DropDownList1.SelectedItem.Value);
…………
}如果(*)式没有写的话,在下拉列表框中选中相应的选项则可以从数据库中得到信息,并在Label标签中显示,但是如果定义了DataSet数据集dsPubs,则此时提示未将对象引用设置到对象的实例我想问的是,为什么预先定义和让系统自动定义数据集会产生这样的差别?
未将对象引用设置到对象的实例
单步看看那个值为null
adapter.Fill(dsPubs, "Students"); //填充 DataSet
这个Fill 方法不是已经填充了吗,为什么还会是null回 2楼:
如果你自己不预定义,系统会帮忙创建一个数据集,然后DataTable放进去的,编译不会报错。
可以试试。
adapter.Fill(dsPubs, "Students"); //填充 DataSet
adapter 为 Dataadapter 对象的一个实例,调用方法 Fill 把从数据库中获得的数据填充到 DataSet 对象的实例 dsPubs 中的一个名为Students的表中出现这两种情况,假使预先定义则出现对象引用为空,如果由系统定义则对象引用为正常。这让我有点疑惑到底是 Fill 方法出现的问题 还是 DataSet 出了什么问题,后台数据库已经多次测试没有问题,然后
string str="ID=" + DropDownList1.SelectedItem.Value
Label1.Text=str;
测试也会跳出正常的值,到底是哪里出错了导致这两种方法出现不同的结果?
加了判断条件还是不行。
if (DropDownList1.SelectedValue != null){
DataRow[] arrRow = dsPubs.Tables["Students"].Select("ID=" + DropDownList1.SelectedItem.Value);
}
con.Open();
adapter.Fill(dsPubs); //填充 DataSet
最后在下拉列表框中定义入如下事件:
protected void DropDownList1_SelectedIndexChanged(……)
{
DataRow[] arrRow = dsPubs.Tables[0].Select("ID=" + DropDownList1.SelectedItem.Value);
}
确认
DataSet dsPubs = new DataSet(); (*)
con.Open();
adapter.Fill(dsPubs, "Students"); //填充 DataSet
在下拉框事件protected void DropDownList1_SelectedIndexChanged之前执行
con.Open();
adapter.Fill(dsPubs, "Students"); //填充 DataSet
这个是在页面加载就已经进行填充了,所以肯定在下拉框事件之前执行啊。回 11楼
adapter.Fill(dsPubs, "Students"); //填充 DataSet
仔细看看有问题DataSet dsPubs = new DataSet(); (*)
dsPubs 为NUll
adapter.Fill(dsPubs, "Students"); //填充 DataSet
再向 dsPubs 的 Students表添加数据 有问题。dsPubs 里面什么时候有Students表啦
DataSet dsPubs;
adapter.Fill(dsPubs, "Students");
DataTable Students = new DataTable();
如果我这样再实例化一个名为"Students"的数据表之后在使用Fill方法来填充,还是现实未将对象引用设置到对象的实例化,也就是说还是空
if(!this.ispostback){……}是你第一次加载页面才进入这个判断
刷新后为null
去掉这个判断后,还是null。
一般这里都不会出什么问题的。
数据绑定后如果数据本身不发生任何变化,那么只需要向客户端发送一次即可。
StringBuilder sb = new StringBuilder();
sb.Append("<b>");
sb.Append(arrRow[0]["ID"].ToString());
是这样子来存储它的,因为始终只有一条记录。我想问的,还有没有其他方法来取指定索引的值,一定要用select方法吗?