首页 新闻 会员 周边

ASP.NET DropDownList 的属性SelectedValue

0
悬赏园豆:10 [已解决问题] 解决于 2011-04-26 11:06

页面初始化时的代码为

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)
{

this.ddlUserName.DataSource = UserList;

this.ddlUserName.DataTextField = "Name";
this.ddlUserName.DataValueField = "Id";
this.ddlCustomerName.DataBind();

    }

}

protected void ddlUserName_SelectedIndexChanged(object sender, EventArgs e)
{
int userId = TypeParse.IntParse(this.ddlUserName.SelectedValue);

}

 以上这段代码可以正确获得userId。调试查看“this.ddlUserName.SelectedValue”即为''this.ddlUserName.SelectedValue''中的值,即数据库中''ID”对应的值。

但是我把程序改为

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)
{

this.ddlUserName.DataSource = UserList;

this.ddlUserName.DataTextField = "Name";
//this.ddlUserName.DataValueField = "Id";
this.ddlCustomerName.DataBind();

    }

}

protected void ddlUserName_SelectedIndexChanged(object sender, EventArgs e)
{
int userId = TypeParse.IntParse(this.ddlUserName.SelectedValue);

}

即将this.ddlUserName.DataValueField = "Id";注释掉,本以为通过查看“this.ddlUserName.SelectedValue”获得的应该为空字符串,但是结果获得的却是“this.ddlUserName.DataTextField ”中的值,即“Name”。

这是我不明白的地方,希望高人指点。
                

一个属性是DataTextField,一个是DataValueField

慕容小北的主页 慕容小北 | 初学一级 | 园豆:190
提问于:2011-04-25 14:26
< >
分享
最佳答案
0

不指定DataValueField绑定的字段时,默认与DataTextField一致。

如果你把那二句注释掉,也就是都没有绑定,那么就会默认绑定的数据源列表的类型,也就是MyWeb.DAL.USsr,实际上绑定的就是这个类型的USsr.ToString()或者是typeof(USsr).FullName.

收获园豆:6
上不了岸的鱼 | 老鸟四级 |园豆:4613 | 2011-04-25 15:03
嗯,谢谢你,是这样的,学习了!
慕容小北 | 园豆:190 (初学一级) | 2011-04-26 11:05
其他回答(4)
0

不指定DataValueField默认与DataTextField一致

收获园豆:1
artwl | 园豆:16736 (专家六级) | 2011-04-25 14:29
刚才在程序中把this.ddlUserName.DataTextField = "Name";和this.ddlUserName.DataValueField = "Id";这两句都注释了,结果this.ddlUserName.SelectedValue仍有值,它的值为程序中的对应的数据库的表名的路径即“MyWeb.DAL.USsr”,这是怎么回事啊?
支持(0) 反对(0) 慕容小北 | 园豆:190 (初学一级) | 2011-04-25 14:40
0

答案如上所回答的,DropDownList控件不指定DataValueField=value , DataTextField=text 的时候,会绑定this.ddlUserName.DataSource = UserList; 一个UserList对象!

 

收获园豆:1
Chenkun | 园豆:806 (小虾三级) | 2011-04-25 14:53
终于明白了,谢谢你!
支持(0) 反对(0) 慕容小北 | 园豆:190 (初学一级) | 2011-04-26 11:06
0
收获园豆:1
邀月 | 园豆:25475 (高人七级) | 2011-04-25 16:14
谢谢!
支持(0) 反对(0) 慕容小北 | 园豆:190 (初学一级) | 2011-04-26 11:05
0

绑定dropdownlist时要指定DataValueField和, DataTextField,即对应绑定数据源(datatable)中的相应的字段,默认绑定是数据列表类型

收获园豆:1
爱研究源码的javaer | 园豆:930 (小虾三级) | 2011-04-26 09:09
谢谢!
支持(0) 反对(0) 慕容小北 | 园豆:190 (初学一级) | 2011-04-26 11:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册