【问题标题】:How can I display the 2 row in database in my dropdown menu如何在下拉菜单中显示数据库中的 2 行
【发布时间】:2021-11-22 01:06:07
【问题描述】:

到目前为止,我只能显示 1 行,但我还想在下拉列表中添加另一行 这是我的代码 enter image description here

这是我在文本字段和值字段中的代码

DropTeam.DataSource = dtt;
DropTeam.DataValueField = "TeamDescr"+"TeamCode";
DropTeam.DataTextField = "TeamDescr"+"TeamCode";
DropTeam.DataBind();

【问题讨论】:

  • 这是我的代码
  • 这是我在文本填充和值字段中的代码 DropTeam.DataSource = dtt; DropTeam.DataValueField = "TeamDescr"+"TeamCode"; DropTeam.DataTextField = "TeamDescr"+"TeamCode"; DropTeam.DataBind();
  • dtt添加其他项目,绑定后显示

标签: c# sql asp.net


【解决方案1】:

您必须在 Fill 函数中提供表名,并且 Fill 需要一个 DataSet 而不是 DataTable 所以它应该像这样sd.Fill(ds,"Branch")

here how to use DataSet with DataTable

【讨论】:

  • 我想做的是像 Teamcode+teamDescr 像 (123 - Team1)
【解决方案2】:

你可以使用一段时间:

    string mainconn = ConfigurationManager.ConnectionStrings["Ref"].ConnectionString;
    string sqlqueryy = "select * from Branch";
    using (SqlConnection connection = new SqlConnection(mainconn))
    {
        SqlCommand command = new SqlCommand(sqlqueryy, connection);
        connection.Open();
        SqlDataReader read = command.ExecuteReader();
        while (read.Read())
            {
                string TeamDescr= read["TeamDescr"].ToString();
                string TeamCode= read["TeamCode"].ToString();
                DropTeam.Items.Add(TeamCode + " - " + TeamDescr);
            };
        read.Close();
        connection.Close();
     }

【讨论】:

  • 我想做的是像 Teamcode+teamDescr 像 (123 - Team1)
  • 我已经编辑了代码,检查一下。
  • 另外,我建议在 sqlqueryy 中指定列名。如果您在 Beanch 表中有多个列,通过扭动 * 您将获得所有不必要的值。所以它会是这样的:select TeamCode, TeamDescr from Branch。像这样更优化。 @约翰威克
【解决方案3】:

嗯,一个典型的下拉菜单(组合)可以让您选择一行。典型的组合框可以让您选择一行进行显示,然后“通常”选择 PK 行。

所以 PK 行选择应该保留 PK 行值,但用于显示?与访问组合不同,多列不支持多于一行。

所以,您可以做的是简单地串联附加列。

假设我们有酒店名称的下拉菜单。我们这样说:

SELECT ID, HotelName from tblHotels ORDER BY HotelName

要在下拉菜单中显示酒店名称和城市?

你可以这样:

SELECT ID, HotelName + ',' + City As MyHotel from tblHotels ORDER BY HotelName

掉落只会为您返回一个 PK 值 (ID)。然后,您可以从该值中获取/使用/派生该组合的实际城市名称。

所以标记:

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

代码:

            string strSQL = "SELECT ID, HotelName, City, " +
                            "(HotelName + ' (' + City + ')') AS MyHotel " + 
                            "FROM tblHotels ORDER BY HotelName";

            cboHotel.DataSource = MyRst(strSQL);
            cboHotel.DataBind();

输出:

你可以添加一个固定的字体大小。 (但下拉 HTML 将删除这些空白)。

但是,您可以通过填充 '\u00A0' 字符来解决该问题。

所以,让我们采用固定字体,然后这样做:

        <asp:DropDownList ID="cboHotel" runat="server"
            DataValueField="ID"
            DataTextField="HotelName"  Width="288px"
            style="font-family:courier, 'courier new', monospace;"
            ></asp:DropDownList>

为了填充,我们这样做:

            strSQL = "SELECT ID, HotelName, City " +
                     "FROM tblHotels ORDER BY HotelName";

            DataTable rst = MyRst(strSQL);
            rst.Columns[1].MaxLength = 255;

            foreach (DataRow MyRow in rst.Rows)
            {
                MyRow["HotelName"] = ((String)MyRow["HotelName"]).PadRight(35, '\u00A0') +
                    " | " + MyRow["City"];
            }
            cboHotel.DataSource = rst;
            cboHotel.DataBind();

所以,我们只是对表格数据进行预处理,现在我们得到了这个:

现在,任何选定的行将只返回 PK 值,然后您可以从该组合选择中获取城市名称、税率或其他任何内容。

第三种方式?您将“伪造”下拉菜单,并弹出(显示)包含所有列的网格视图。但是,除非发现上述两个想法中的任何一个都不够用,否则我不会发布该解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    相关资源
    最近更新 更多