DataValueField没有检索到值,尽管DataTextField检索了



当我尝试使用我的下拉列表的DataValueField作为方法中的输入 int 参数时,通过使用解析方法int.parse(DataValueField)因为它的值应该来自数据库,它给了我这个运行时错误

输入字符串格式不正确

所以我调试了网站,看看问题在哪里,我发现它没有通过SelectedIndexChanged方法检索它的值,尽管下拉列表是在Page_Load方法
中填写的这是page_load方法

protected void Page_Load(object sender, EventArgs e)
{
writerddl.DataSource = DS.show_all_writers();
writerddl.DataValueField = "writerid";
writerddl.DataTextField = "writersname:;
writerddl.DataBind(); }  

这是 SelectedIndexChanged 方法:

protected void writerddl_SelectedIndexChanged(object sender, EventArgs e)
{
writer _writer = DS.select_writer_by_id(int.Parse(writerddl.DataValueField)).Single();
usernametxt.Text = _writer.username;
passwordtxt.Text = _writer.password;
nametxt.Text = _writer.writersname;
}

请注意,我使用的是LinQtoSql,所以DS。方法"() 是一个存储过程

In msdn DataValueField

使用此属性可以指定包含列表控件中每个项的值的字段。

所以它只是属性名称,而不是值。要获取您需要使用的选定值

  1. 选定值
  2. 选定项

替换这个:

writer _writer = DS.select_writer_by_id(int.Parse(writerddl.DataValueField)).Single();

跟:

int i = int.Parse(writerddl.SelectedItem.Value);
writer _writer = DS.select_writer_by_id(i).Single();

要从下拉列表中选择所选值,应使用 writerddl。SelectedValue 而不是 writerddl。数据值字段

谢谢帕尔瓦蒂

相关内容

最新更新