20100605 学习记录:下拉框值选中

本文介绍了多种在ASP.NET中使DropDownList控件选中特定值的方法,包括直接设置选中值、通过文本查找选中项及绑定时插入默认选项等。此外还提供了一些特殊情况下的解决方案。


页面load的时候,如果dropdownlist中存在某值,则使该值被选中

 

if(sSetValue.Equals(dropDownList.Items[i].Value)
     dropDownList.SelectedValue=sSetValue;    //DropDownList.SelectItem.Text

  dropDownList.SelectedIndex=i;  

  dropDownList.Items.FindByText("xxx").Selected=true;

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

  DropDownList.Items[i].Selected=true;

 

http://hi.baidu.com/shiye2008/blog/item/80ec22d3b8c3f8003bf3cf79.html 

http://www.nokiamobile.org.cn/12_100222_10066816.html 

 

------------------------------------------------------------------------

另有人总结:

1.

myDrop.Items.Add("请选择");
myDrop.SelectedIndex=myDrop.Items.Count-1;

2.

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

DropDownList.Items.FindByValue("你的值").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.

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

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

5.在代码中dropdownlist绑定时在dataset的第一行位置添加一项,此为曲线解决方法。最适合与添加“请选择”字样

DropDownList ddlzc = (DropDownList)e.Row.FindControl("ddlzc");                    
string sqlTextzc = "select * from zhicheng";            
OleDbConnection conn = getCon();
OleDbDataAdapter dazc = new OleDbDataAdapter(sqlTextzc, conn);            
DataSet dszc = new DataSet();            
conn.Open();
dazc.Fill(dszc, "zhicheng");            
dszc.Tables[0].Rows.Add(new object[] { 0, "首选的文本").ToString() });            
DataView dvzc = dszc.Tables[0].DefaultView;            
dvzc.Sort = "zid";            
ddlzc.DataSource = dvzc;
ddlzc.DataValueField = "zid";
ddlzc.DataTextField = "zname";            
ddlzc.DataBind();

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();
}

From: http://wzm9252.blog.sohu.com/98447279.html 

 

 

转载于:https://www.cnblogs.com/neru/archive/2010/06/08/1753669.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值