c# / asp.net -使用AutoPostBack和OnIndexChange获取项目值

本文关键字:OnIndexChange 获取 项目 AutoPostBack 使用 asp net | 更新日期: 2023-09-27 18:18:50

所以我对c#不是很熟悉,我正在努力学习基础知识,但对我来说仍然很模糊。我要做的是:当我在列表框中选择一个项目时,它会得到所选项目的值并将其放入文本框(这只是为了测试,当我想使用MSSSQL的值时)。

这是我的标记(。aspx代码):<asp:ListBox ID="Listbox1" runat="server" AutoPostBack="True" onselectedindexchanged="lstArtiesten_SelectedIndexChanged"></asp:ListBox>

下面是我的代码(.aspx.cs代码):
protected void Listbox1_SelectedIndexChanged(object sender, EventArgs e)
{
    txtArtName.Text = Listbox1.SelectedItem.Text;
} 

正如你所看到的,AutoPostBack是开启的。我知道每当我点击其中一个项目它被重定向到"受保护的无效Page_Load(对象发送者,EventArgs e){}",但是当我尝试在没有AutoPostBack的情况下这样做时,它不会发送我选择的信息。我想使用AutoPostBack,但我不确定何时或何时不使用它)。

我的问题是,当我选择我的项目页面将刷新,我选择的值将丢失,因此一个空的结果…

我试过使用if(isPostBack){},但未能理解c#的结构。

我希望有人能帮我做这件事。提前感谢!尊敬的Nkmol

c# / asp.net -使用AutoPostBack和OnIndexChange获取项目值

抱歉,如果我误解了这个问题,但是从它的声音来看,发生的事情是,当您更改Listbox中的值时,这会导致回发,这反过来又运行您最初用于填充Listbox的代码。(我假设你在代码后面这样做,因为我在你的标记中没有看到任何东西,指定列表中的项目)

给定这个标记:

 <asp:ListBox ID="Listbox1" runat="server" AutoPostBack="True" 
     onselectedindexchanged="lstArtiesten_SelectedIndexChanged"></asp:ListBox>
     <asp:TextBox runat="server" id="txtArtName"></asp:TextBox>

你的代码应该看起来像这样:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //only call initialise during initial page load.
            initialise();
        }
    }
    protected void initialise()
    {
        //add some items to the list
        Listbox1.Items.Add("Something1");
        Listbox1.Items.Add("Something2");
        Listbox1.Items.Add("Something3");
        Listbox1.Items.Add("Something4");
        Listbox1.SelectedIndex = 0; //select the first item in the list, or whatever
    }
    protected void lstArtiesten_SelectedIndexChanged(object sender, EventArgs e)
    {
        txtArtName.Text = Listbox1.SelectedItem.Text;
    }

注意,initialize方法只有在Postback -i中没有调用时才会被调用。E初始页面加载。通过检查状态和不重新加载列表框,我们允许ViewState工作它的[可怕的,黑暗的,邪恶的]魔法,并恢复你在列表框控件上所做的选择。

希望对你有帮助。

您熟悉ViewState的概念吗?这就是允许ASP。. NET控件来"记住"它们的值。我建议你访问这个教程,然后,如果你仍然有问题,然后问/重新问你的问题。

ASP。. NET ViewState教程