今天做一个查询功能时遇到了一个问题,是这样的:
我要用DropDownList来绑定数据库里查询出来的类型数据,如下图:想在这两个类型之上再增加一个“全部留言”的项,因为查询条件应该有查询全部类型的留言。尝试了三种方式,最后终于实现了,不多说了,“上菜啦……”
一、直接绑定数据:
1TList<MessageType>messageTypeSource=ClassMessage.GetMessageTypeByModuleId(moduleId);//获取所有类型的方法
2DropDownList1.DataSource=messageTypeSource;//绑定数据源
3DropDownList1.DataTextField="FmessageTypeName";//文本内容字段
4DropDownList1.DataValueField="FmessageTypeId";//值字段
5DropDownList1.DataBind();
编译后页面代码:
1<selectname="dropdownlist1"id="dropdownlist1">
2<optionvalue="1">网站建议</option>
3<optionvalue="2">教学相关</option>
4</select>
缺少了,不选择类型时的“全部留言”这个选项。这不符合我的要求,于是Search了一下网络资源,发现有用DropDownList1.Items.Add(new ListItem("全部留言","0")),这种方法的,于是修改代码如下:
二、用 DropDownList1.Items.Add() 方法动态添加一项:
1TList<MessageType>messageTypeSource=ClassMessage.GetMessageTypeByModuleId(moduleId);//获取所有类型的方法
2DropDownList1.DataSource=messageTypeSource;//绑定数据源
3DropDownList1.DataTextField="FmessageTypeName";//文本内容字段
4DropDownList1.DataValueField="FmessageTypeId";//值字段
5DropDownList1.DataBind();
6DropDownList1.Items.Add(newListItem("全部留言","0"));//动态添加新项
编译后页面代码:
1<selectname="dropdownlist1"id="dropdownlist1">
2<optionvalue="1">网站建议</option>
3<optionvalue="2">教学相关</option>
4<optionvalue="0">全部留言</option>
5</select>
“全部留言”被放置到了最后一项,这也不是我想要的效果,于是再次Web Search后,找到了解决办法,请看下面的代码:
三、用 DropDownList1.Items.Insert() 方法动态插入指定序号的新项:
1TList<MessageType>messageTypeSource=ClassMessage.GetMessageTypeByModuleId(moduleId);//获取所有类型的方法
2DropDownList1.DataSource=messageTypeSource;//绑定数据源
3DropDownList1.DataTextField="FmessageTypeName";//文本内容字段
4DropDownList1.DataValueField="FmessageTypeId";//值字段
5DropDownList1.DataBind();
6//DropDownList1.Items.Add(newListItem("全部留言","0"));//动态添加新项
7DropDownList1.Items.Insert(0,newListItem("全部留言","0"));//动态插入指定序号的新项
编译后页面代码:
1<selectname="dropdownlist1"id="dropdownlist1">
2<optionvalue="0">全部留言</option>
3<optionvalue="1">网站建议</option>
4<optionvalue="2">教学相关</option>
5</select>
这样就实现了想要的样式,最终还是DropDownList1.Items.Insert(0,new ListItem("全部留言","0"));方法解决了问题。最终效果如下图: