列表框中的C#SelectedValue

时间:2011-05-18 12:19:04

标签: c# asp.net sql listbox

我正在使用以下代码将数据添加到我的列表框中:

    SqlCommand cmd1 = new SqlCommand("SELECT U_Naam, U_Voornaam, User_ID FROM Login ORDER BY U_Naam ASC", con);
    dr = cmd1.ExecuteReader();

    int teller = 0;

    while (dr.Read())
    {
        hulp = dr["U_Naam"].ToString() + " " + dr["U_Voornaam"].ToString();
        lbNiet.Items.Add(hulp);
        lbNiet.Items[teller].Value = dr["User_ID"].ToString();
        teller++;
    }

当我运行程序并在列表中选择一个项目时,我想得到它的值(使用selectedvalue)。当我这样做时,它总是给出一个nullref(没有值)。我在某个地方看过所选项目在回发后丢失了吗?我该如何解决这个问题?

谢谢!

6 个答案:

答案 0 :(得分:2)

我不认为在正常情况下PostBack之后所选项目会丢失 - 我的猜测是你在PostBack之后意外地再次填充ListBox,这样当你做出选择时,系统会点击Page_Init / Page_Load(或者其他)您选择填充ListBox的事件并重新创建所有选项。这样做会覆盖当前选择的选项。

如果是这种情况,可以通过在重新填充列表之前先检查PostBack来轻松避免。

答案 1 :(得分:2)

替换这些行

lbNiet.Items.Add(hulp);
lbNiet.Items[teller].Value = dr["User_ID"].ToString();

lbNiet.Items.Add(new ListItem(hulp,dr["User_ID"].ToString();));

答案 2 :(得分:1)

您是否在“加载ASP.NET”页面中运行该代码而未检查它是否为回发?如果您在加载页面时执行此操作,则应确保将加载代码包装在if (!IsPostback) {}块中。

答案 3 :(得分:0)

数据绑定而不是添加循环将有所帮助。

答案 4 :(得分:0)

您是否在页面中使用ViewState?

如果是,请检查页面的IsPostBack属性,并且不要在回发后填充列表。

答案 5 :(得分:0)

您可以使用Request.Form查找发布值
或者我认为如果您使用scriptmanager和updatepanel,它会在回发后重新填充该框