asp代码如下
<option value="0">做为社区的分类</option>
<%
set rs_c= server.CreateObject ("adodb.recordset")
sql = "select * from tb_board order by rootid,orders"
rs_c.open sql,conn,1,1
 do while not rs_c.EOF%>
<option value="<%=rs_c("boardid")%>" <%if request("editid")<>"" and clng(request("editid"))=rs_c("boardid") then%>selected<%end if%>>
<%if rs_c("depth")>0 then%>
<%for i=1 to rs_c("depth")%>
-
<%next%>
<%end if%><%=rs_c("boardtype")%></option>
<%
rs_c.MoveNext 
loop
rs_c.Close 
%>
</select>看看如何翻译成asp.net(c#)
不是我懒的确弄了半天也没弄出来我想要的结果
虽然我绑定了但是没有按照要求正确的显示格式,请大家帮忙
我就是想知道如何来循环dataset的东西
就像asp里面的那个do while not rs.eof那种效果
就算多讨论也可以谢谢大家

解决方案 »

  1.   

    dropdownlist 可以直接绑定 数据源的呀
      

  2.   

    example:dropdownlist.DataSource = ds;//dataset
    dropdownlist.DataTextField = "text字段";
    dropdownlist.DataValueField = "value字段";
    dropdownlist.DataBind();
      

  3.   

    //测试是否可以直接绑定datatable
     DataTable dt = new DataTable();        DataColumn dc = new DataColumn();
            dc.ColumnName = "Name";
            dc.DataType = typeof(string);        dt.Columns.Add(dc);
            DataRow dr = null;
            for (int i = 0; i < 5; i++)
            {
                dr = dt.NewRow();
                dr["name"] = "name" + i.ToString();            dt.Rows.Add(dr);
            }
            DropDownList drop = new DropDownList();
            drop.DataSource = dt;
            drop.DataTextField = "name";
            drop.DataValueField = "name";
            drop.DataBind();
            this.Page.Form.Controls.Add(drop);
      

  4.   

    mqcan 请问你这里写的name代表什么
    dc.ColumnName = "Name";另外没看到有sql语句以及执行打开操作阿能不能给一个完整的例子看看呢?谢谢了
      

  5.   


    你只要从去数据,返回一个datatable就可以直接绑定了
      

  6.   


    dropdownlist.DataSource = ds;//dataset 
            dropdownlist.DataTextField = "text字段";
            dropdownlist.DataValueField = "value字段";
            dropdownlist.DataBind();
            dropdownlist.SelectedIndex = dropdownlist.Items.IndexOf(dropdownlist.Items.FindByValue(request("editid")));
    或者 DataSet ds = new DataSet();
            dropdownlist.Items.Clear();
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                ListItem li = new ListItem(dr["boardid"].ToString(),dr["boardid"].ToString());
                if(li.Value.Equals(request("editid")))
                    li.Selected = true;
                dropdownlist.Items.Add(li);
            }
      

  7.   

    晕我看大家都没有看明白我的意思
    我的下拉菜单应该是这样的结构1
    -11
    2
    -22
    --222
    3
    4
    -44
    而我自己邦定的效果是
    1
    11
    2
    22
    222
    3
    4
    44
    我是不知道怎么在前面加上一个-
    因为在asp里面能够直接判断每一个字段在每次循环得到值得大小从而决定是否在前面+一个连接符“-”
    在asp.net里面我不知道怎么加上
    思路我其实都有就是不知道具体的实现代码哪位能仔细看看我的意思呢
      

  8.   

    你在数据库查询的时候为什么不根据depth来确定结果集
    case when depth>1 then '-'+result
    else result end as ....
    或重新遍历数据表里面的数据
    for(int i=0;i<ds.Tables["name"].rows.count;i++)
    {
        if(int32.Parse(ds.Tables["name"].rows[i]["depth"])>1)
         {
    //s.Tables["name"].rows[i]["depth"]="-"+s.Tables["name"].rows[i]["depth"];
    }
    }
      

  9.   

     DataSet ds = new DataSet();
            dropdownlist.Items.Clear();
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                string value = dr["boardtype"].ToString();
                for (int i = 1; i < Convert.ToInt32(dr["depth"]); i++)
                {
                    value = "-" + value;
                }
                ListItem li = new ListItem( value,dr["boardid"].ToString());
                if (li.Value.Equals(request("editid")))
                    li.Selected = true;
                dropdownlist.Items.Add(li);
            }