dropdownlist赋初始值问题

poetc 2007-07-05 04:25:08
dropdownlist 初始化
绑定:
public static void BuildDropdownList(System.Web.UI.WebControls.DropDownList dList, DataTable dt)
{
dList.DataSource = dt;
dList.DataTextField = dt.Columns[1].ColumnName.Trim();
dList.DataValueField = dt.Columns[0].ColumnName.Trim();
dList.DataBind();
}

private void BuildControl()
{
string sql = "select adminId,adminName from cxadmin ";
DataTable dt = this.d_src.ExecuteTxtDataTable(sql);
Utility.BuildDropdownList(this.dListCX, dt);
this.dListCX.Items.Add("未选择");
this.dListCX.Items.FindByText("未选择").Value = "";
this.dListCX.Items.FindByText("未选择").Selected = true;
}

赋初始值:
1)
this.dListCXMan.SelectedValue = cx.adminId;
2)
for (int i = 0; i < this.dListCX.Items.Count; i++)
{
string temp = this.dListCX.Items[i].Value.Trim();
if (temp == cx.adminId.Trim())
this.dListCX.Items[i].Selected = true;
}

3)this.dListCXMan.Items.FindByValue(cp.adminId).selected=true;
4) for (int i = 0; i < this.dListCX.Items.Count; i++)
{
string temp = this.dListCX.Items[i].Value.Trim();
if (temp == cx.adminId.Trim())
this.dListCX.SelectedIndex = i;
}
四种方式,只有4)起作用。为什么???
...全文
479 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
poetc 2007-07-06
  • 打赏
  • 举报
回复
这样的答案,怎么给分呢,kaka...
poetc 2007-07-06
  • 打赏
  • 举报
回复
已经确定是空格问题。呵。数据库的数据类弄用了char(40)。value.trim().Length是36,value.Length值是40.
谢谢各位。
qloven 2007-07-05
  • 打赏
  • 举报
回复
http://www.cnblogs.com/bmw/archive/2007/07/04/806152.html
poetc 2007-07-05
  • 打赏
  • 举报
回复
有一种可能,绑定是value中多了空格。在取value做比较时不用trim()有时不等。
poetc 2007-07-05
  • 打赏
  • 举报
回复
2报错是因为前面有过this.dListCX.Items.FindByText("未选择").Selected = true;
poetc 2007-07-05
  • 打赏
  • 举报
回复
谢谢各位。
sq_zhuyi():
SelectedValue是只读的??
temp == cx.adminId.Trim肯定是成立的。
FindByValue(cp.adminId)确定是空值。
2报错,但4得到想要的结果。
mqc507 2007-07-05
  • 打赏
  • 举报
回复
用空主题限定DropDownList吧 , 呵呵.看起来很笨,不过很好用, 哈哈
路人乙e 2007-07-05
  • 打赏
  • 举报
回复
1、SelectedValue是只读的
2、temp == cx.adminId.Trim()肯定没成立
3、FindByValue(cp.adminId)肯定无此值
4、和2是双胞胎
答案原因:测试结果
mqc507 2007-07-05
  • 打赏
  • 举报
回复
是Item限定Value,而不是value限定Item,懂吗?

改变Item可以改变Value,而Value只能用于查询Item ,不能改变 Item 的选择.你要根据value找到Item,才可改变Item的选择。真晕了...

if (str2 == str)
this.DropDownList1.SelectedValue = str;
改为:
if(str2 == str)
{
ListItem LI= (ListItem)DropDownList1.Items.FindByValue(str);
if(LI != null)
{
LI.Selected=true;
}
}
poetc 2007-07-05
  • 打赏
  • 举报
回复
用this.DropDownList1.SelectedValue = str,错误提示为DropDownList1有一个无效 SelectedValue...郁闷了...
poetc 2007-07-05
  • 打赏
  • 举报
回复
明明str2 == str,this.dListCXMan.Items.FindByValue(str)却是null值,为什么呢?
debug1984 2007-07-05
  • 打赏
  • 举报
回复
1对value操作,也可能重复.
2,3所操作的对象是Items[i],都可以多个并行存在.
4操作的对象是dListCX,是唯一的.

根据你的结果倒推过去的。
poetc 2007-07-05
  • 打赏
  • 举报
回复
private void BindData()
{
string sql = "select adminId,adminName from cxadmin";
Utility.BuildDropdownList(this.DropDownList1, this.d_src.ExecuteTxtDataTable(sql));
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.BindData();
}

}

protected void Button3_Click(object sender, EventArgs e)
{
string str1 = this.DropDownList1.Items[0].Value.Trim();
string str=this.TextBox3.Text.Trim();

this.TextBox2.Text = str1;
this.TextBox4.Text = str2;
this.TextBox6.Text = str;
if (str2 == str)
this.DropDownList1.SelectedValue = str;
}

还是错,错误跟前面一样,异常详细信息: System.ArgumentOutOfRangeException: “DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中。

对了,str的值是形如 ed7dfd96-f128-4a35-b50b-038dffdab24e,由Guid.NewGuid().ToString()生成写入数据库
lishijie910123 2007-07-05
  • 打赏
  • 举报
回复
ddl.DataSource = dataset.table[0];
ddl.DataValueField = "DepotId";
ddl.DataTextField = "DepotName";
ddl.DataBind();
this.ddlDepot.Items.Insert(0, "---请选择仓库---");

62,072

社区成员

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

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

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

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