繁体   English   中英

列表框中的C#SelectedValue

[英]C# SelectedValue in a 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(无值)。 我读过某个地方,回发后所选项目丢失了吗? 我该如何解决?

谢谢 !

我认为正常情况下在PostBack之后选择的项目不会丢失-我的猜测是您不小心在PostBack之后再次填充了ListBox,因此,当您进行选择时,系统会按Page_Init / Page_Load(或您选择的任何事件)以填充列表框)并重新创建所有选项。 这样做会覆盖当前选择的选项。

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

替换这些行

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

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

您是否在ASP.NET页面的“加载”中运行该代码,而没有检查它是否是回发? 如果要在页面加载中进行加载,则应确保将加载代码包装在if (!IsPostback) {}块中。

对数据进行数据绑定而不是添加循环会有所帮助。

您是否为页面使用ViewState?

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

您可以使用Request.Form查找过帐的值
或者我认为,如果您使用脚本管理器和更新面板,则在回发后会重新填充该框

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM