我是c#的新手所以请记住这一点。
我正在为一个宁静的网络服务构建一个c#前端,我有一个列表框,我已将项目放入:
listBox.DataSource = list;
listBox.DataTextField = "name";
listBox.DataValueField = "id";
listBox.DataBind();
然后我选择一个项目并单击激活此代码的按钮:
long id = Convert.ToInt64(listBox.SelectedItem.Value);
问题是SelectedItem为null。
就像我说的,我是c#的新手,所以我不知道可能出现什么问题。
答案 0 :(得分:4)
在Page_Load
事件中,请执行以下操作:
if(!IsPostBack)
{
listBox.DataSource = list;
listBox.DataTextField = "name";
listBox.DataValueField = "id";
listBox.DataBind();
}
注意:这将在第一次加载页面时绑定您的列表框,而不是在每个帖子后面绑定,这就是之前擦除所选项目的原因。在ASP.NET中,单击事件处理程序在Page_Load
事件发生后发生,因此如果您在绑定时没有设置条件,那么每个回发都会在事件处理程序有机会查找之前清除数据用户选择的内容。
答案 1 :(得分:2)
if(!Page.IsPostBack)
{
listBox.DataSource = list;
listBox.DataTextField = "name";
listBox.DataValueField = "id";
listBox.DataBind();
}
这必须在您的Page_Load
。
答案 2 :(得分:0)
即使您已经正确编码以防止在回发时选择您的选择,还必须满足另一个要求以避免相同的症状。如果提供DataValueField,则该列中的值必须是唯一的。请参阅问题ASP.NET DropDownList not retaining selected item on postback