当我尝试使用我的下拉列表的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。“方法”()是一个存储过程
答案 0 :(得分:1)
替换它:
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();
答案 1 :(得分:1)
答案 2 :(得分:1)
要从下拉列表中选择所选值,您应该使用writerddl.SelectedValue而不是writerddl.DataValueField
由于 帕瓦蒂