如何在 ASP.NET 的下拉列表中显示更新后的 table 的值

How to display value from updated table in dropdown list in ASP.NET

在 ASP.NET 的下拉列表中成功更新 table 后,我无法成功显示 SQL 服务器数据库 table 的当前值。

我的下拉列表有效,我可以 select 一个值并在 table 中更新。当我单击保存按钮时,它确实显示了我保存在 .aspx 页面上的值。但是,当我稍后显示 .aspx 页面时,该值不会显示在下拉列表中。

我会提到我的下拉列表来自 select 的 2 个值连接在一起,但我对 table 的更新是主键,以保留数据库规范化。如果这是导致不良行为的原因,任何人都可以提供有关如何在更新后显示值的建议吗?它适用于我没有在下拉列表中使用串联值的任何字段。

感谢您提供的任何帮助!

好吧,select在下拉列表中输入值不会“更新”table - 所以这很令人困惑。

我们假设在大多数情况下下拉菜单有两个值。列表中的 PK 值(值),然后显示列。如前所述,您可能会为第二列集中文本 + 值或其他内容,但它仍然会 return 您保存在数据库中的 ID 值 - 对吗?所以我们真的不关心第二列的表达式或内容,但第一列必须是 PK id。

所以说我们 select 一家酒店。我们可以像这样在酒店名单中包含“城市”:

        <h3>Select Hotel</h3>
        <asp:DropDownList ID="cboHotel2" runat="server"
            DataValueField="ID"
            DataTextField="MyHotel"
            Width="288px">
        </asp:DropDownList>

要填写的代码为:

  protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            LoadCombo();
    }

    public void LoadCombo()
    {
        string strSQL = "SELECT ID, HotelName, City, " +
            "(HotelName + ' ---->(' + City + ')') AS MyHotel " +
            "FROM tblHotels ORDER BY HotelName";

        cboHotel2.DataSource = MyRst(strSQL);
        cboHotel2.DataBind();
    }

因此我们得到:

但是,假设我们在按钮事件中有代码,我们这样做:

现在非常非常小心:

要获得掉落值,你可以使用这个:

        Debug.Print(cboHotel2.SelectedValue);
        Debug.Print(cboHotel2.Text);

两者都会 return 值!!! (不是正文!!!!!!)

所以,我建议避免以上情况,你这样做:

        Debug.Print(cboHotel2.SelectedItem.Value);
        Debug.Print(cboHotel2.SelectedItem.Text);

以上将为您提供“ID”和“显示文本”。

还有,你是把加载时的组合框设置成后面的“ID”,还是文本值?????? (你在做什么?)。

你可以这样设置PK(值):

        cboHotel2.Text = "73";


        cboHotel2.SelectedValue = cboHotel2.Items.FindByText("Banff Aspen Lodge ---->(Golden)").Value;

现在第二种方法在这里非常糟糕,因为我们正在为第二个显示列使用连接值?

天哪,我们必须 100% 匹配文本(这可能很难做到!!)。

因此,我建议您根据掉落的 PK 值(第一列)思考、编码、使用和编写,并远离尝试通过文本设置该组合在代码中。