用各种方法写dropdownlist 绑定数据库值,都没问题。
如: public void ddlBind()
{
//绑定公司dropdownlist
List<QiaModel> xzhrmodel = new List<QiaModel>();
xzhrmodel = HrSQL.GetQia();
DropDownList1.Items.Clear();
DropDownList1.Items.Add(new ListItem("请选择", ""));
foreach (QiaModel qia in xzhrmodel)
{
ListItem li = new ListItem();
li.Value = qia.qia_mail;
li.Text = qia.qia_name;
DropDownList1.Items.Add(li);
}
}
或是
List<QiaModel> xzhrmodel = new List<QiaModel>();
xzhrmodel = HrSQL.GetQia();
ddl_pia.DataSource = xzhrmodel;
ddl_pia.DataTextField = "qia_name";
ddl_pia.DataValueField = "qia_mail";
ddl_pia.DataBind();以上都没问题,正常。
但是,我还要,根据值绑定选定的值就有问题了。
this.ddl_pia.SelectedItem.Text = Bmodel.B_qia.ToString();
这样写没问题,但他的显示出来的效果是,值始终放在最上面,如 B ABCD 或 C ABCD... 会重复(不知有看懂没)
表面上是实现了效果,但
Bmodel.B_qia = this.ddl_pia.SelectedItem.Text.ToString();
Bmodel.B_qiamail = this.ddl_pia.SelectedValue.Trim();
//取值时,selectvalue值是空值,除非我另外做选择,到是都有值的。
然后我又换另外几种写法
第一种:
int index = ddl_pia.SelectedIndex;
for (int i = 0; i < ddl_pia.Items.Count; i++)
{
if (ddl_pia.Items[i].Value == Bmodel.B_qia.ToString())
{
ddl_pia.Items[index].Selected = false;
ddl_pia.Items[i].Selected = true;
break;
}
}
结果没报错,但效果 没有选定我要的值。
第二种:
this.ddl_pia.SelectedValue = Bmodel.B_qiamail.ToString();
结果和第一种一样,没有选定我要的值。
第三种:
DropDownList1.Items.FindByValue(Bmodel.B_qia.ToString()).Selected = true;
报错“未将对象引用设置到对象的实例。”
以上AutoPostPack true/false 都有试过。
这个问题困扰我好久了,谁能帮我解决?很奇怪,另外其他也有写类色的却是正常的
//绑定酒店数据
List<HotelModel> hotel = new List<HotelModel>();
hotel = HotelSQL.GetHotleName();
ddl_hotel.DataSource = hotel;
ddl_hotel.DataTextField = "hotel_name";
ddl_hotel.DataValueField = "hotel_name";
ddl_hotel.DataBind();
this.ddl_hotel.SelectedValue = Cmodel.C_hotel;
如: public void ddlBind()
{
//绑定公司dropdownlist
List<QiaModel> xzhrmodel = new List<QiaModel>();
xzhrmodel = HrSQL.GetQia();
DropDownList1.Items.Clear();
DropDownList1.Items.Add(new ListItem("请选择", ""));
foreach (QiaModel qia in xzhrmodel)
{
ListItem li = new ListItem();
li.Value = qia.qia_mail;
li.Text = qia.qia_name;
DropDownList1.Items.Add(li);
}
}
或是
List<QiaModel> xzhrmodel = new List<QiaModel>();
xzhrmodel = HrSQL.GetQia();
ddl_pia.DataSource = xzhrmodel;
ddl_pia.DataTextField = "qia_name";
ddl_pia.DataValueField = "qia_mail";
ddl_pia.DataBind();以上都没问题,正常。
但是,我还要,根据值绑定选定的值就有问题了。
this.ddl_pia.SelectedItem.Text = Bmodel.B_qia.ToString();
这样写没问题,但他的显示出来的效果是,值始终放在最上面,如 B ABCD 或 C ABCD... 会重复(不知有看懂没)
表面上是实现了效果,但
Bmodel.B_qia = this.ddl_pia.SelectedItem.Text.ToString();
Bmodel.B_qiamail = this.ddl_pia.SelectedValue.Trim();
//取值时,selectvalue值是空值,除非我另外做选择,到是都有值的。
然后我又换另外几种写法
第一种:
int index = ddl_pia.SelectedIndex;
for (int i = 0; i < ddl_pia.Items.Count; i++)
{
if (ddl_pia.Items[i].Value == Bmodel.B_qia.ToString())
{
ddl_pia.Items[index].Selected = false;
ddl_pia.Items[i].Selected = true;
break;
}
}
结果没报错,但效果 没有选定我要的值。
第二种:
this.ddl_pia.SelectedValue = Bmodel.B_qiamail.ToString();
结果和第一种一样,没有选定我要的值。
第三种:
DropDownList1.Items.FindByValue(Bmodel.B_qia.ToString()).Selected = true;
报错“未将对象引用设置到对象的实例。”
以上AutoPostPack true/false 都有试过。
这个问题困扰我好久了,谁能帮我解决?很奇怪,另外其他也有写类色的却是正常的
//绑定酒店数据
List<HotelModel> hotel = new List<HotelModel>();
hotel = HotelSQL.GetHotleName();
ddl_hotel.DataSource = hotel;
ddl_hotel.DataTextField = "hotel_name";
ddl_hotel.DataValueField = "hotel_name";
ddl_hotel.DataBind();
this.ddl_hotel.SelectedValue = Cmodel.C_hotel;
value不能重复
Bmodel.B_qiamail = this.ddl_pia.SelectedValue.Trim();
之后就是你应该先进行绑定,然后再选中你想要的值
string value = li.value;
string text = li.text;
楼主试试..
最直接的问题很多人会忘记的是你的autoback开了吧?
其次如果开了 你可以考虑先绑定后赋值
或者一般是一个===请选择=== 为初始 就可以避免这样的问题了
好象大概是这个,你得试下,反正能用.