【!!!!简单的下拉框问题却困扰了我这个菜鸟整整1天!!!!】

xx00004 2005-05-23 09:33:47
下拉框DropDownList1 绑定一个简单地区表t1

t1 tcode tname
01 四川
02 云南
03 贵州

DropDownList1绑定如下
this.DropDownList1.DataValueField = "tcode";
this.DropDownList1.DataTextField = "tname";

我第一次写入数据库的时候 比如选择的是 云南 就把02保存到数据库

当我要进行修改的时候 我先重新绑定DropDownList1

然后让DropDownList1的SelectedValue="02";

结果下拉框就出现了两个云南 晕死~~

怎么让下拉框绑定的还是数据库中那三个数据但又让它显示的是我上次保存的那个值呢?



...全文
166 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuike519 2005-05-23
  • 打赏
  • 举报
回复
1、首先确定你正确的绑定了数据。
2、其次使用FindByValue时需要判断是否找到了这个对象。
3、设置这个对象的Selected为true。

检查绑定的数据是否和你在数据库中看到的一致,如果一致那么只需要FindByValue或者FindByText来找到你要显示的ListItem对象然后设置其Selected属性为true即可。
wlzbaby 2005-05-23
  • 打赏
  • 举报
回复
this.DropDownList1.SelectedItem.Text = UpdateIncept.Rows[0]["tname"].ToString

这句不对,你应该指定某个想的选定属性,而不是给某个选定项赋值,思路就不对

this.DropDownList1.Items[云南对应的索引].Selected = true;
njuzgj 2005-05-23
  • 打赏
  • 举报
回复
应该是数据库的问题,你测试一下
xx00004 2005-05-23
  • 打赏
  • 举报
回复
biggerboy(饮酒买醉) 你的方法可以用做最后的绝招

alien54155415() 清空了 问题照旧

feitianyyj(飞雪连天) 清空了 问题照旧
风之影子 2005-05-23
  • 打赏
  • 举报
回复
根据你的代码:
if(!IsPostBack)
{
this.Bindd1();//实现绑定!
下面那行默认显示的用不上.
}
再写一个方法,在以后每次改变DropDownList选项的时候来调,最好是调存储过程!
wangyongli 2005-05-23
  • 打赏
  • 举报
回复
foreach(ListItem obj in objDrop.ListItems)
{
if(obj.selected=true)
在这里保存值
obj.selected=false;
}
xx00004 2005-05-23
  • 打赏
  • 举报
回复
孟大叔 数据库没有问题 绑定也没有问题

主要是重新绑定后

我如何指定下拉框的选择值

为我取出来的数据库中原来保存进去的值?
风之影子 2005-05-23
  • 打赏
  • 举报
回复
if(!IsPostBack)
{
实现绑定.
}
另外再写一个方法,实现选中项的查询,来刷新DropDownList
xx00004 2005-05-23
  • 打赏
  • 举报
回复
帖代码

绑定:

private void Binddl()
{
HardwareManagement.PublicDB.ClassHM.HardwareOperate getdl = new HardwareManagement.PublicDB.ClassHM.HardwareOperate();
if(HardwareManagement.PublicDB.ClassHM.pubDataSet.Tables["dl"] == null)
{
InceptModeTable.Getdl();
}
this.DropDownList1.DataSource = HardwareManagement.PublicDB.ClassHM.pubDataSet.Tables["dl"];
this.DropDownList1.DataValueField = "tcode";
this.DropDownList1.DataTextField = "tname";
this.DropDownList1.DataBind();
}

保存进数据库后 重新获取下拉框的值 就是先保存进去的
private void Page_Load(object sender, System.EventArgs e)
{
if(!this.IsPostBack)
{
HardwareManagement.PublicDB.ClassHM.HardwareOperate getInceptupdate = new HardwareManagement.PublicDB.ClassHM.HardwareOperate();
DataTable UpdateIncept = getInceptupdate.GetUpdateIncept();

this.Binddl();
this.DropDownList1.SelectedItem.Text = UpdateIncept.Rows[0]["tname"].ToString();
}
}
feitianyyj 2005-05-23
  • 打赏
  • 举报
回复
绑定前先清空裡面的數據,listbox1.Items.Clear
孟子E章 2005-05-23
  • 打赏
  • 举报
回复
估计你修改数据库有问题,数据库没有2个云南,也不会显示2个云南的
alien54155415 2005-05-23
  • 打赏
  • 举报
回复
在Page_Load,
If Not IsPostBack Then
DropDownList1.Items.Clear()
重新查詢綁定
biggerboy 2005-05-23
  • 打赏
  • 举报
回复
最笨的办法删除Dropdownlist重新建一个。我遇见过类似的问题,没办法重新一建就好了
jisen 2005-05-23
  • 打赏
  • 举报
回复
把你的源代码贴出来!
xx00004 2005-05-23
  • 打赏
  • 举报
回复
DropDownList1的绑定是这样滴

绑定没有问题 关键是如何让它的Text=我取出来的这个

UpdateIncept.Rows[0]["tname"].ToString(); //这个tname就是云南
yitiaocheng_10 2005-05-23
  • 打赏
  • 举报
回复
重新绑定前清空下Dropdownlist试试
cuike519 2005-05-23
  • 打赏
  • 举报
回复
DropDownList1.Items.FindByValue("02").Selected = true;
honglin119 2005-05-23
  • 打赏
  • 举报
回复
可能有重复的绑定,贴出代码
xx00004 2005-05-23
  • 打赏
  • 举报
回复
菜鸟提问 各位哥哥表笑我哈 ~~~

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧