从数据库填充 DropDownList 的正确方法是什么?

2023-11-22

我正在从 SQL Server 数据库填充 DropDownList,如下所示。它工作得很好,但我不确定这是一个好方法。有人可以阐明这种方法并进行一些改进吗?

private void LoadSubjects()
{
    ddlSubjects.Items.Clear();
    string selectSQL = "SELECT SubjectID,SubjectName FROM Students.dbo.Subjects";

    SqlConnection con = new SqlConnection(connectionString);
    SqlCommand cmd = new SqlCommand(selectSQL, con);
    SqlDataReader reader;

    try
    {
        ListItem newItem = new ListItem();
        newItem.Text = "<Select Subject>";
        newItem.Value = "0";
        ddlSubjects.Items.Add(newItem);

        con.Open();
        reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            newItem = new ListItem();
            newItem.Text = reader["SubjectName"].ToString();
            newItem.Value = reader["SubjectID"].ToString();
            ddlSubjects.Items.Add(newItem);
        }
        reader.Close();
    }
    catch (Exception err)
    {
        //TODO
    }
    finally
    {
        con.Close();
    }
}

您可以将 DropDownList 绑定到数据源(DataTable、List、DataSet、SqlDataSource 等)。

例如,如果您想使用数据表:

ddlSubject.DataSource = subjectsTable;
ddlSubject.DataTextField = "SubjectNamne";
ddlSubject.DataValueField = "SubjectID";
ddlSubject.DataBind();

编辑 - 更完整的示例

private void LoadSubjects()
{

    DataTable subjects = new DataTable();

    using (SqlConnection con = new SqlConnection(connectionString))
    {

        try
        {
            SqlDataAdapter adapter = new SqlDataAdapter("SELECT SubjectID, SubjectName FROM Students.dbo.Subjects", con);
            adapter.Fill(subjects);

            ddlSubject.DataSource = subjects;
            ddlSubject.DataTextField = "SubjectNamne";
            ddlSubject.DataValueField = "SubjectID";
            ddlSubject.DataBind();
        }
        catch (Exception ex)
        {
            // Handle the error
        }

    }

    // Add the initial item - you can add this even if the options from the
    // db were not successfully loaded
    ddlSubject.Items.Insert(0, new ListItem("<Select Subject>", "0"));

}

要通过标记(而不是代码隐藏)设置初始值,请指定选项并将 AppendDataBoundItems 属性设置为 true:

<asp:DropDownList ID="ddlSubject" runat="server" AppendDataBoundItems="true">
    <asp:ListItem Text="<Select Subject>" Value="0" />
</asp:DropDownList>

然后,您可以将 DropDownList 绑定到代码隐藏中的数据源(只需记住删除:

ddlSubject.Items.Insert(0, new ListItem("<Select Subject>", "0"));

从代码隐藏中,否则您将有两个“”项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从数据库填充 DropDownList 的正确方法是什么? 的相关文章

随机推荐

  • wkhtmltopdf google 地图输出的 JavaScript 延迟

    我正在与 WKTHMTOPDF 合作并且非常享受它 然而 正在转换的页面有谷歌地图 生成的 PDF 中的地图显示为半加载状态 我知道有一个选项可以添加 javascript delay在以前的版本中 但它似乎已被弃用 我使用的是0 99版本
  • 哪些音频格式(扩展)可以通过 just_audio Flutter 包在 ios 和 Android 上使用?

    哪些音频格式 扩展 可以通过 just audio Flutter 包在 ios 和 Android 上使用 想知道我应该允许用户使用 file picker 上传哪些扩展 以便他们可以使用 just audio 包 我在任何地方都找不到列
  • ASP.NET MVC 中动态更改主模板

    我需要在我的应用程序 ASP NET MVC 上支持不同的母版页 推荐的方法是什么 将母版页名称传递给视图 存储母版页 在会话中或其他内容中 以便在用户访问期间保留它 使用自定义基本控制器并继承它 Public Class CustomBa
  • jquery - 如何确定 div 是否更改其高度或任何 css 属性?

    当 div 更改其高度或任何 css 属性时 如何触发事件 我有一个 id 的 divmainContent 我希望jquery在改变高度时自动触发一个事件 我做了这样的事情 mainContent change height functi
  • 如何强制 Composer 使用 https:// 而不是 git://?

    我有这样的东西 repositories type package package name myrepo version dev master source url https github com me myrepo git type
  • 将 UITextView / UITextField 中的空格编码为 URL 格式

    我正在尝试将 UITextView 或 UITextField 的内容作为参数发送到 php 文件 NSString urlstr NSString alloc initWithFormat http server com file php
  • Javascript中如何检查字符是否为字母?

    我正在使用以下命令提取 Javascript 字符串中的字符 var first str charAt 0 我想检查一下这是否是一封信 奇怪的是 Javascript 中似乎不存在这样的功能 至少我找不到 我该如何测试这个 我不相信有一个内
  • DialogFragment 参数和空指针异常

    我的类应该向 DialogFragment 传递一个参数 但我的应用程序在 对话框类的 onCreate 方法中因 NullPointerException 而崩溃 对话框片段类部分代码 public class ConfirmDialog
  • 为什么使用匿名类型而不是创建类[重复]

    这个问题在这里已经有答案了 我正在重构一个旧的应用程序 它使用动态内联 SQL 从大型 Oracle 数据库中提取数据 我创建了一个运行良好的存储过程 PL SQL 由于它只有一行 数据行 我让它返回一个数据行 该类驻留在 DAL 中 当我
  • Edge 浏览器中的 focus()

    我在用popup focus 单击按钮后聚焦弹出窗口 这focus 除 EDGE 浏览器外 所有浏览器都可以正常工作 我面临的问题是间歇性的 有时我可以在浏览器上查看弹出窗口 子弹出对话框 有时可以在浏览器后面 即桌面上 查看 并且我可以通
  • 如何使用闹钟类设置闹钟

    您好 我正在尝试使用 AlarmClock 类在我的应用程序中设置闹钟 我使用的代码如下 Intent intent new Intent intent setAction AlarmClock ACTION SET ALARM start
  • 创建新的 Microsoft.CodeAnalysis.CustomWorkspace - 出现 ReflectionTypeLoadException

    我尝试在 NET 编译器平台 Roslyn 示例中创建类似 ConsoleClassifier 的内容 Microsoft CodeAnalysis v0 7 此时我得到了ReflectionTypeLoadException Custom
  • 从 URL 加载时应如何处理视网膜/普通图像?

    我了解如何以编程方式从 URL 为我的应用程序加载图像 而不是将它们打包在应用程序中 但如何处理 1x 与 2x 问题 如果需要 我可以从外部源提供这两个版本 但是在设置 UIImage 时如何处理 我很确定您无法以自动方式远程加载 2x
  • 使用 Node.js 作为简单的 Web 服务器

    我想运行一个非常简单的 HTTP 服务器 每个 GET 请求example com应得index html提供给它 但作为常规 HTML 页面 即 与阅读普通网页时的体验相同 使用下面的代码 我可以读取内容index html 我如何服务i
  • 带有片段或活动的 Android Studio 导航抽屉

    我正在尝试使用 Android Studio 的导航抽屉模板开发一个应用程序 因此 我使用此模板创建了一个新项目 但是当我运行程序并单击菜单项时 视图不会改变 我在互联网上到处搜索 但我不知道如何处理这个问题 这是Android Studi
  • libxslt 是否具有将一个文档拆分为多个文档的功能?

    看起来 libxslt 不支持 XSLT 2 0 并且xsl result document 有没有办法模仿xsl result document using libxslt or xsltproc 是的 有 使用exsl 文档 一个简单的
  • JPA 标准中具有复合主键的 IN 子句

    我有一个名为group tableMySQL 中只有两列user group id and group id 它们都是类型VARCHAR 这两列一起形成一个复合主键 我需要使用子选择执行语句IN 根据传递给查询的值列表选择行 Overrid
  • CakePHP 安全

    我是网络应用程序安全性的新手 我正在 Cakephp 中开发一个应用程序 我的一位朋友告诉我有关跨站点请求伪造 CSRF 和跨站点脚本 XSS 攻击等的信息 但不确定还有多少 我需要一些帮助来了解如何让 Cakephp 保护我的网络应用程序
  • 文本对齐:对齐和图像

    我有一个图像列表 不在列表中 但如果可以解决问题的话可能是 我想填充 div 的整个宽度 我已经尝试过底部的代码 虽然它确实证明了 p 标记中的任何文本合理 但它对图像的作用却不同 我怎样才能让它在 div 的整个宽度上均匀地间隔图像 di
  • 从数据库填充 DropDownList 的正确方法是什么?

    我正在从 SQL Server 数据库填充 DropDownList 如下所示 它工作得很好 但我不确定这是一个好方法 有人可以阐明这种方法并进行一些改进吗 private void LoadSubjects ddlSubjects Ite