设置DropDownList的当前选项

  问:

  请问一下在asp.net中的DropDownList绑定到一个数据表后,怎么设置他其中的一个项目为已选项啊?不要叫我用SelectedIndex来设置第几的个,我只能知道要设置已选的那个项目的值,并不知道他排在第几位

  ______________________________________________________________________________________________

  答1:

  myDrop.Items.Add("请选择");

  myDrop.SelectedIndex=myDrop.Items.Count-1;

  ______________________________________________________________________________________________

  答2:

  DDLUnitQuery.Items.FindByText("所有").Selected=true;

  ______________________________________________________________________________________________

  答3:

  由于你的DropDownList是绑定到数据表的,所以DropDownList和数据表中的顺序是一样的。你可以写个函数,判断当前DropDownList的选定值在数据表中是第几个:

  //

  public int getSelectedIndex(string str)

  {

  int idx=0;

  dsEditData1=(dsEditData)Session["dsEditData1"];

  for(int i=0;i<dsEditData1.EDIT_DATAlIST.Rows.Count;i++)

  {

  dsEditData.EDIT_DATAlISTRow editRow=(dsEditData.EDIT_DATAlISTRow)dsEditData1.EDIT_DATAlIST.Rows[i];

  string dataStr=editRow.editValue;

  if(dataStr==str)

  {

  idx=i;

  break;

  }

  }

  return idx;

  }

  然后在HTML代码中绑定SelectedIndex值:

  //

  asp:DropDownList id=DropDownList1 runat="server" DataMember="EDIT_DATAlIST" DataSource="<%# dsEditData1 %>" Width="93px" DataTextField="editData" DataValueField="editValue" SelectedIndex='<%# getSelectedIndex(DataBinder.Eval(Container, "DataItem.personationid").ToString()) %>'>

  </asp:DropDownList>

  ______________________________________________________________________________________________

  答4:

  DropDownList.Items.FindByText("你的值").Selected=true;

  DropDownList.Items.FindByValue("你的值").Selected=true;

  ______________________________________________________________________________________________

  答5:

  DropDownList1.SelectedIndex=-1;

  DropDownList1.Items.FindByText("选定项目的值").Selected=true;

  or

  DropDownList1.SelectedIndex=-1;

  DropDownList1.Items.FindByValue("选定项目的值").Selected=true;

  ______________________________________________________________________________________________

  答6:

  我有一办法,从数据库检取,这个是radioButtonList,需要使用哈希表,你可以参考一下

  using System.Web.SessionState;

  public class modrole : System.Web.UI.Page

  {

  public Hashtable StateIndex;

  private void Page_Load(object sender, System.EventArgs e)

  {

  StateIndex = new Hashtable();

  myConnection = new OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);

  if (!IsPostBack)

  BindGrid();

  }

  //数据绑定

  public void BindGrid()

  {

  OleDbDataReader myReader;

  String sql = "select * from tb_role order by roleid";

  OleDbDataAdapter myCommand = new OleDbDataAdapter(sql, myConnection);

  DataSet ds = new DataSet();

  myCommand.Fill(ds, "tb_role");

  DataView dv = ds.Tables["tb_role"].DefaultView;

  if (ds.Tables["tb_role"].Rows.Count !=0) //如果表不空,绑定数据

  {

  rbtl_role.DataSource=ds.Tables["tb_role"].DefaultView;

  rbtl_role.DataTextField = "rolename";

  rbtl_role.DataValueField = "roleid";

  rbtl_role.DataBind();

  }

  //对RadioButtonList进行哈稀编号,保持同RadioButtonList.SelectedIndex的值一致编号

  int i = 0;

  foreach(DataRowView drv in dv )

  {

  StateIndex[drv.Row["roleid"]]=i;

  i++;

  }

  //进行比较,对选中的进行设置

  sql = "select roleid from tb_userrole where user_id=1";

  OleDbCommand myCmd = new OleDbCommand(sql, myConnection);

  myConnection.Open();

  myReader = myCmd.ExecuteReader();

  while (myReader.Read())

  {

  //此句选中设置

  rbtl_role.SelectedIndex = Convert.ToInt32(StateIndex[myReader["roleid"]].ToString());

  }

  // always call Close when done reading.

  myReader.Close();

  // Close the connection when done with it.

  myConnection.Close();

  }

  ______________________________________________________________________________________________

  答7:

  imfine,感谢你,你的方法最直观:)