关于dropdownlist取值的一个问题。
我有一个表有两个字段,一个是id。一个是list_info
我在存储过程中写了查询此表
代码如下
if(!IsPostBack)
{
try
{myclass my=new myclass ();
System.Data.DataSet dt=my.getdataset ("select_list_info","word");
this.DropDownList1 .DataSource =dt.Tables ["word"].DefaultView ;
this.DropDownList1 .DataValueField =dt.Tables ["word"].Columns [0].ColumnName ;
this.DropDownList1 .DataTextField =dt.Tables ["word"].Columns [0].ColumnName ;
this.DropDownList1 .DataBind ();
this.DropDownList1 .Items .Add ("全部类型");
int sd=this.DropDownList1 .Items .Count-1 ;
this.DropDownList1 .Items [sd].Value ="";
}
catch(System.Exception ex){this.Label1 .Text =ex.ToString ();}
}
else{this.Label2 .Text =this.DropDownList1 .SelectedItem.Value .ToString () ;}
我是绑定以后,在后面动态添加了一行。
现在的问题是。
当我用id。也就是用columns[0]的时候。是正确的。。可以下拉,下拉后列表选了以后,会在label中显示出来。
当我用list_info后,也就是columns[1]的时候,就不正确了,可以下拉,也可以绑定,但是选择以后,就自动调到第一个数据上了,只有选最后动态添加的那个“全部类型”,才可以显示出来。
请问是为什么。
为什么两个字段却有不同的效果呢?
id是int字段。
list_info是nvarchar字段。
谢谢
问题点数:20、回复次数:8Top
1 楼songxiaozhao(雨朋)回复于 2006-03-06 10:08:54 得分 10
第一,你应该把两个字段同时绑定,看注释1,2
第二,动态添加一个是insert语句,看注释3
这样写,
if(!IsPostBack)
{
try
{myclass my=new myclass ();
System.Data.DataSet dt=my.getdataset ("select_list_info","word");
this.DropDownList1 .DataSource =dt.Tables ["word"].DefaultView ;//1
this.DropDownList1 .DataValueField =dt.Tables ["word"].Columns //2[0].ColumnName ;
this.DropDownList1 .DataTextField =dt.Tables ["word"].Columns [1].ColumnName ;
this.DropDownList1 .DataBind ();
this.DropDownList1 .Items .Insert (0,new ListItem("全部类型","全部类型");//3
}
catch(System.Exception ex){this.Label1 .Text =ex.ToString ();}
}
else{this.Label2 .Text =this.DropDownList1 .SelectedValue.ToString () ;}
Top
2 楼youyuan1980(水云间)回复于 2006-03-06 10:11:24 得分 0
我可不可以value和text用的是一个字段啊?Top
3 楼youyuan1980(水云间)回复于 2006-03-06 10:20:41 得分 0
再问一下。Top
4 楼youyuan1980(水云间)回复于 2006-03-06 10:52:59 得分 0
我再顶Top
5 楼hl_ws(小数点)回复于 2006-03-06 11:56:56 得分 10
this.DropDownList1 .DataValueField =dt.Tables ["word"].Columns [0].ColumnName ;
this.DropDownList1 .DataTextField =dt.Tables ["word"].Columns [0].ColumnName ;
LZ的这两行代码绑得不都是一个列吗?Top
6 楼youyuan1980(水云间)回复于 2006-03-06 12:24:17 得分 0
是的,是一个列。。。。
但是,一个是text。一个是value,不是嘛。
两个值不一样的吧。Top
7 楼youyuan1980(水云间)回复于 2006-03-06 12:25:01 得分 0
更正一下,我想有text和value的值是一样的,都绑定在这一个列中
如何实现。Top
8 楼youyuan1980(水云间)回复于 2006-03-06 12:56:08 得分 0
我刚才又试了一下。
this.DropDownList1 .DataValueField =dt.Tables ["word"].Columns [0].ColumnName ;
this.DropDownList1 .DataTextField =dt.Tables ["word"].Columns [0].ColumnName ;
如果绑定的是数字就可以,只要是显示数字的就可以正常显示出来。
如果是字符,汉字,就不行。这是为什么啊,shitTop




