<asp:dropdownlist id="MusicTypes" runat="server"></asp:dropdownlist>
绑定数据源的程序是:
string aql = "select * from SM_SingerTypes";
OperDB op = new OperDB();
DataTable dt = new DataTable();
dt = op.Populate(aql);
SingerTypes.DataSource = dt.DefaultView;
SingerTypes.DataValueField = "ID";
SingerTypes.DataTextField = "TypesName";
SingerTypes.DataBind();
还有:<asp:radiobuttonlist id="IsCommend" runat="server" RepeatDirection="Horizontal" Width="104px" Height="24px">
<asp:ListItem Value="0" Selected="True">否</asp:ListItem>
<asp:ListItem Value="1">是</asp:ListItem>
</asp:radiobuttonlist>
现在从数据库读出一个数据行:
string aql = "select SM_MusicInfo.* ,SM_SpecialMusic.SpecialName ,SM_SpecialMusic.ID as sid from SM_SpecialMusic,SM_MusicInfo where SM_SpecialMusic.ID = SM_MusicInfo.SpecialID  and SM_MusicInfo.ID = "+ID;
OperDB op = new OperDB();
DataTable dt = new DataTable();
dt = op.Populate(aql);
然后我想把这个数据行中的相关的信息设置成dropdownlist和RadioButtonList被选择的项,我是这样做的 :
MusicTypes.SelectedItem.Value = dt.Rows[0]["sid"].ToString();
IsCommend.SelectedItem.Value = dt.Rows[0]["IsCommend"].ToString();
但是这样完全没有作用,我应该怎么做才可以达到目的?

解决方案 »

  1.   

    MusicTypes.SelectedValue = dt.Rows[0]["sid"].ToString();IsCommend.SelectedValue = dt.Rows[0]["IsCommend"].ToString();
      

  2.   

    楼上的
    我按照你写的做了
    抛出下面的错误:
    异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。参数名: 44源错误: 行 85:  MusicTypes.SelectedValue = dt.Rows[0]["sid"].ToString();
    行 86:  IsCommend.SelectedValue = dt.Rows[0]["IsCommend"].ToString();
     
      

  3.   

    SingerTypes.DataValueField = "ID";
    SingerTypes.DataTextField = "TypesName";
    取得id字段,所以你设置selectedvalue也要用DT.ROWS[0]["ID"].TOSTRING()
      

  4.   

    MusicTypes.SelectedItem.Text = dt.Rows[0]["sid"].ToString();
    IsCommend.SelectedItem.Text = dt.Rows[0]["IsCommend"].ToString();
      

  5.   

    是否是首先确定dt.Rows[0]["sid"].ToString();能得到值
    其次你看直接add(new listitem(dt.Rows[0]["sid"].ToString();,dt.Rows[0]["sid"].ToString();));这样可以么?
      

  6.   

    抛出下面的错误:
    异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。参数名: 44源错误: 行 85:  MusicTypes.SelectedValue = dt.Rows[0]["sid"].ToString();
    行 86:  IsCommend.SelectedValue = dt.Rows[0]["IsCommend"].ToString();
     
    ___________________________以上为引用___________________________________
    出现此情况,错误在于 MusicTypes 中的 DataValueField 字段中不包含 dt.Rows[0]["sid"].ToString(); 读取出来的值形象一点就是 MusicTypes 绑定后,假如下列两个项目
        <asp:ListItem Value="12">流行音乐</asp:ListItem>
        <asp:ListItem Value="15">古典音乐</asp:ListItem>而你取出来的值 dt.Rows[0]["sid"].ToString() 为 "25"
    那么 
            MusicTypes.SelectedValue = dt.Rows[0]["sid"].ToString(); 
    就会引发 ArgumentOutOfRangeException 错误
    因为它不能设置并选中 MusicTypes 中不存在此 Value 所对应的项以上解释,能明白吗?
      

  7.   

    //仅在 .Net Framework v1.1 支持, v1.0 是不支持的
        MusicTypes.SelectedValue = dt.Rows[0]["sid"].ToString(); 
    //如是 1.0 版本的话,可用以下语句(v1.1 也支持)this.MusicTypes.Items.FindByText("流行音乐").Selected=true;

    this.MusicTypes.Items.FindByValue("12").Selected=true;以上也要注意 this.MusicTypes.Items.FindByValue("12") 为 null 的话也会报错保险起见,换成   ListItem it = this.MusicTypes.Items.FindByValue("12");
       if(it!=null)
       {
          it.Selected = true;
       }
      

  8.   

    for(int i = 0;i<this.IsCommend.Items.Count;i++)
    {
    if(this.IsCommend.Items[i].Value == dt.Rows[0]["sid"].ToString())
    {
    this.IsCommend.Items[i].Selected;
    }
    }
      

  9.   

    cityhunter172(寒羽枫) 
    正解