DropDownList数据绑定问题
DropDownList绑定SqlDataReader后,为什么少了第一条记录?怎么解决?
SqlDataReader dr = cmd.ExecuteReader();
if(dr.Read())
{
ClassManage.DataTextField="Name";
ClassManage.DataValueField="ID";
ClassManage.DataSource=dr;
ClassManage.DataBind();
}
问题点数:20、回复次数:15Top
1 楼saucer(思归)回复于 2005-10-29 02:08:52 得分 10
don't call dr.Read, since the next Read called inside DataBind() will move to the second record,,
SqlDataReader dr = cmd.ExecuteReader();
ClassManage.DataTextField="Name";
ClassManage.DataValueField="ID";
ClassManage.DataSource=dr;
ClassManage.DataBind();
or use
if(dr.HasRows)
Top
2 楼jyk(今天由我来写的代码,明天就让程序自己完成!喜欢编程。和气生财。共同提高。共同进步!)回复于 2005-10-29 07:14:48 得分 0
又被老大抢先了Top
3 楼jxufewbt(我的目标是5星)回复于 2005-10-29 07:41:47 得分 3
SqlDataReader dr = cmd.ExecuteReader();
if(dr.Read())
{
ClassManage.DataTextField="Name";
ClassManage.DataValueField="ID";
ClassManage.DataSource=dr;
ClassManage.DataBind();
}
改成
SqlDataReader dr = cmd.ExecuteReader();
ClassManage.DataTextField="Name";
ClassManage.DataValueField="ID";
ClassManage.DataSource=dr;
ClassManage.DataBind();
Top
4 楼adandelion(水源是CSDN最黑的地方,但这个最黑是CSDN一手制造的!)回复于 2005-10-29 08:28:05 得分 1
SqlDataReader dr = cmd.ExecuteReader();
ClassManage.DataTextField="Name";
ClassManage.DataValueField="ID";
ClassManage.DataSource=dr;
ClassManage.DataBind();
----------------------------
可以吗?以前使用DataGrid绑定数据的时候不行的.只能一行行地初始化的!Top
5 楼jxufewbt(我的目标是5星)回复于 2005-10-29 08:33:08 得分 0
to adandelion(被封杀) :
可以的,我试过了。Top
6 楼dutguoyi(新鲜鱼排)回复于 2005-10-29 09:14:57 得分 0
每次見到老大回帖我都是充滿敬佩。Top
7 楼timtong(acat)回复于 2005-10-29 09:31:47 得分 1
如果要用datareader读出数据
那么就用
while(dr.read())
{
dropdownlist.item.add(dr[1].tostring());
}
====12345,上山打老虎Top
8 楼luyesql(叶子绿了)回复于 2005-10-29 12:37:50 得分 0
好好Top
9 楼xiaosaye()回复于 2005-10-30 23:09:53 得分 0
可有时候用dr.HasRows判断后,在取数据时会报错,明明是有记录的Top
10 楼henry3695(henry(老师说学好正则可以赚美元的))回复于 2005-10-30 23:48:51 得分 1
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)//就第一次打开的时候执行
{
this.DBbind();
}
}
private void DBbind()
{
SqlConnection con = DB.CreateCon();
con.Open();
SqlCommand cmd = new SqlCommand("select * from cards_product",con);
SqlDataReader sdr=cmd.ExecuteReader();
this.ddcardtype.DataSource=sdr;
this.ddcardtype.DataTextField="productname";
this.ddcardtype.DataValueField="productid";
this.ddcardtype.DataBind();
sdr.Close();
con.Close();
}Top
11 楼pwqzc(吴旗娃徒也~~老鼠粮仓之路)回复于 2005-10-31 08:12:49 得分 1
不管是if还是while还是for
都是不对的
每次都要绑,什么意思?
绑定一次就ok啊Top
12 楼drk928(一起看斜阳)回复于 2005-10-31 09:28:53 得分 1
你用DATATABLE就不用完了嘛..Top
13 楼yb2008(中科商务网--ZKE360.COM)回复于 2005-10-31 09:56:19 得分 1
写在if (dr.read())中当然是少了第一条呀,记录会移到第二条才绑定呀!
直接写在外面即可!Top
14 楼yb2008(中科商务网--ZKE360.COM)回复于 2005-10-31 09:57:15 得分 0
只要绑定一次即可,写在Page_Load函数中!Top
15 楼zfhuangwei(追风小蛇)回复于 2005-10-31 10:22:58 得分 1
SqlDataReader dr = cmd.ExecuteReader();
ClassManage.DataTextField="Name";
ClassManage.DataValueField="ID";
ClassManage.DataSource=dr;
ClassManage.DataBind();Top




