在html页面有这样一个控件,我要绑定的是音乐类别,如网络歌曲、日韩歌曲 都是放在数据库的,值得可以从数据库提取出来,也可以绑定,但是提交之后无值。控件是:<asp:DropDownList id="tbMusicSpecial" runat="server" CssClass="select" AutoPostBack="true"></asp:DropDownList>cs页面代码如下:protected void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)//如果加上这个判断tbMusicSpecial.SelectedValue永远都是没有值,不加这个判断tbMusicSpecial.SelectedValue值永远都是第一个.
{
BDMusicType();
}
}
//绑定控件
private void BDMusicType()
{
#region 绑定音乐专辑
DataTable dt = uh.SearchMusicType(this.userId);
this.tbMusicSpecial.DataSource = dt;
this.tbMusicSpecial.DataTextField = "musicTypeName";
this.tbMusicSpecial.DataValueField = "musicTypeId";
this.tbMusicSpecial.DataBind();
this.tbMusicSpecial.SelectedIndex = 0;//这段写不写都没关系。
#endregion
}
//提交事件
protected void Submit1_ServerClick(object sender, System.EventArgs e)
{
#region 添加音乐
string musicSpecial = this.tbMusicSpecial.SelectedValue.ToString();
if(musicSpecial == "")
{
//提交后执行这里。
Response.Write("<script language='javascript'>alert('对不起!音乐专辑不能为空。');location.href='LoadMusic.aspx?URLuserId="+this.userId+"';</script>");
Response.End();
}
else
{
Response.Write(musicSpecial);
}
}希望大家亲自测试一下,给出详细的代码,谢谢了!

解决方案 »

  1.   

    可能是DataValueField 没值。
      

  2.   


    我这都赋值了的啊:
    this.tbMusicSpecial.DataTextField = "musicTypeName";
    this.tbMusicSpecial.DataValueField = "musicTypeId";而且我在网页里查看源文件也是有值的。
      

  3.   


     string musicSpecial = this.tbMusicSpecial.SelectedValue.ToString();你这句跟踪有值没有
      

  4.   

    代码上看不出什么问题啊!  你最好最机打段点跟一下!
    string musicSpecial = this.tbMusicSpecial.SelectedValue.ToString();
    在这里打个短点然后看this.tbMusicSpecial.SelectedValue.ToString() 等于多少!
      

  5.   

    其实就是提交之后页面重新刷新了,然后又重新 执行了BDMusicType()事件,这样肯定就没有选中的值,或者执行了this.tbMusicSpecial.SelectedIndex = 0;但是这是不正确的。大家能亲自帮小弟在你们的Microsoft Visual Studio上测试一下吗 ?分不够再加
      

  6.   

    对了,你那AutoPostBack属性和AppendDataBoundItems属性都设置为True试试。
      

  7.   

    string musicSpecial = this.tbMusicSpecial.SelectedValue.ToString(); 取到值没有?this.tbMusicSpecial.SelectedItem.value.ToString();
    //或许就没这样写的
    我是刚上路的菜鸟!!!以后请 高手们 多指教  啊QQ:415789296
    Email:[email protected]
      

  8.   

    这个问题是页面刷新的时候,导致的问题,autopost=   false;试试,应该可以的。
      

  9.   

    DataTable dt = uh.SearchMusicType(this.userId);//可能得到的DataTable为中值空你加断点试试
      

  10.   


    这两个我都设置为True了,还是不行。但是我把:
    if (!Page.IsPostBack)//如果加上这个判断tbMusicSpecial.SelectedValue永远都是没有值,不加这个判断tbMusicSpecial.SelectedValue值永远都是第一个.
        {
            BDMusicType();
        }
    改成:
    BDMusicType();
    去掉了判断,有值了,但是值永远都是第一个选项Value,以为是this.tbMusicSpecial.SelectedIndex = 0;这里的原因,但是把这个代码注释掉了还是不行!
      

  11.   

    不能去掉if (!Page.IsPostBack)。
      

  12.   

    如果你的DropDownList不要实现联动的话,你可以把AutoPostBack设置为false,如果你要实现联动的话,就用viewState[]存值,提交的时候从这个viewState上取。
      

  13.   

    你把AutoPostBack属性设置为false也不行?
      

  14.   

    AutoPostBack属性和AppendDataBoundItems设置为了true和false都不行的。
      

  15.   

    那你就用ViewState来保存你这个控件的值吧。。你提交的时候就用这个ViewState[""]的值就行。
      

  16.   

    遇到了相同的问题
    把enableViewState="False"去掉就可以,卡了我一天。。
      

  17.   

    我的页面里根本就没设置 enableViewState 啊,何谈去掉呢 ?