protected void nianDdl_SelectedIndexChanged(object sender, EventArgs e)//这里有错 { string nian = nianDdl.Text.ToString().Trim(); if (Convert.ToInt32(et.yearcount(nian, id1)) > 0) { Response.Write(et.yearcount(nian, id1)); dt1 = et.GetDataBy9(nian,id1); jiaofeiDdl.SelectedValue = dt.Rows[0]["jiaofei"].ToString(); xuexiDdl.SelectedValue = dt.Rows[0]["keshi"].ToString(); huanzhengDdl.Text = dt.Rows[0]["huanzheng"].ToString(); kaoshiDdl.Text = dt.Rows[0]["kaoshi"].ToString(); lunwenDdl.Text = dt.Rows[0]["lunwen"].ToString(); beizhuText.Text = dt.Rows[0]["beizhu"].ToString(); GridView5.DataSource = dt; GridView5.DataBind(); } }
我本来是想让下拉列表的其余项随着年份这一项变化,但是现在却是卡在了sql语句上,按理说
getdataby9应该只返回一列的,但是现在他却返回4列,而且也不是我想要的,这是为什么??、求解答。。。
仔细看看你绑定的数据, 我觉得你绑定到错误的datatable了
Response.Write(et.yearcount(nian, id1)); dt1 = et.GetDataBy9(nian,id1); jiaofeiDdl.SelectedValue = dt.Rows[0]["jiaofei"].ToString(); xuexiDdl.SelectedValue = dt.Rows[0]["keshi"].ToString(); huanzhengDdl.Text = dt.Rows[0]["huanzheng"].ToString(); kaoshiDdl.Text = dt.Rows[0]["kaoshi"].ToString(); lunwenDdl.Text = dt.Rows[0]["lunwen"].ToString(); beizhuText.Text = dt.Rows[0]["beizhu"].ToString(); GridView5.DataSource = dt; GridView5.DataBind();
是啊,我解决了已经。。。。不过也要谢谢您。。。。还是太不细心啊。。。
不是很理解问题。建议把表结构和表中数据放上来
这里一共六行,我是按照nian和personid来搜的,就是像上面的Getdataby9那里定义的,按理说应该返回1行吧,但是现在他却返回4行
getdataby9那句话是SELECT *
FROM Event
WHERE (year = @year) AND (personid = @id)
就是第三张图上的那句话
@王凌志: string nian = nianDdl.Text.ToString().Trim();你在这一句打个断点,看看nian的值是多少
@CrazyJinn: 我用vs2010测过了。。。。就是我的下拉列表里的值。。。。
@王凌志: 不要急,单步调试一点点看,能找出哪里错了的。下班了,祝问题解决
@CrazyJinn: 恩恩,麻烦您了
返回4行,应该执行的SQL语句是:
SELECT * FROM Event WHERE (year < @year) AND (personid = @id)
你检查一下,是不是哪个地方把SQL语句传错了
我就是只想要一个值,可是他给了我四个。。。。就是第一张图最底下的那一张表。。。。。
@王凌志: 你用SQL Profiler监测一下实际执行的SQL语句
@dudu: 恩恩,谢谢了我试试。。。