你调用的对象是空的

2024-03-14

我使用以下代码来检查之前添加到复选框列表中的数据库表中的值,但在此处收到“对象引用未设置为对象的实例”错误:

ListItem currentCheckBox = chkbx.Items.FindByValue(rdr["MemberID"].ToString());

这是代码,感谢您的帮助!

SqlDataReader rdr = null;
SqlConnection conn = new SqlConnection(GetConnectionString());
SqlCommand cmd5 = new SqlCommand("SELECT MemberID FROM ProjectIterationMember WHERE ProjectIterationID IN (SELECT ProjectIterationID FROM Iterations WHERE ProjectID = '" + proj_id + "')", conn);

try
{
    conn.Open();
    rdr = cmd5.ExecuteReader();

    CheckBoxList chkbx = (CheckBoxList)FindControl("project_members");
    while (rdr.Read())
    {
        ListItem currentCheckBox = chkbx.Items.FindByValue(rdr["MemberID"].ToString());
        if (currentCheckBox != null)
        {
            currentCheckBox.Selected = true;
        }
    }
}
finally
{
    if (rdr != null)
    {
        rdr.Close();
    }

    if (conn != null)
    {
        conn.Close();
    }
}

还可以考虑重构代码以分离表示逻辑和数据访问逻辑:

private void SelectProjectMembers(int projectId)
{
    CheckBoxList chkbx = (CheckBoxList)FindControl("project_members");
    // verify if chkbx found

    foreach (string memberId in GetMemberIdsFor(projectId))
    {
        ListItem memberItem = chkbx.Items.FindByValue(memberId);

        if (memberItem != null)
            memberItem.Selected = true;
    }
}

private IEnumerable<string> GetMemberIdsFor(int projectId)
{
    List<string> memberIds = new List<string>();
    string query = String.Format("SELECT MemberID FROM ProjectIterationMember WHERE ProjectIterationID IN (SELECT ProjectIterationID FROM Iterations WHERE ProjectID = '{0}')", projectId);

    // using statements will dispose connection, command and reader object automatically
    using (SqlConnection conn = new SqlConnection(GetConnectionString()))
    using (SqlCommand cmd5 = new SqlCommand(query, conn))
    {
        conn.Open();

        using (SqlDataReader rdr = cmd5.ExecuteReader())
        {
            while (rdr.Read())
                memberIds.Add(rdr["MemberID"].ToString());
        }
    }

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

你调用的对象是空的 的相关文章

随机推荐

  • C++20 中概念的语法

    在这个问题中我们如何转换需求link https stackoverflow com questions 67133581 check if type has certain value types and the keyword valu
  • 如何管理扩展方法的名称空间?

    您是否为所有扩展方法使用全局的 包罗万象的命名空间 或者是否将扩展方法放在与其扩展的类相同的命名空间中 或者您是否使用其他方法 例如应用程序或特定于库的命名空间 我问是因为我需要延长System Security Principal IId
  • MaterialContainerTransform 转换在返回时不起作用

    我的 MaterialContainerTransform 转换是从源 gt 目标进行的 但反之则不然 我的情况非常标准 我试图提供从 RecyclerView 项目 源片段 到 详细信息 片段 目标片段 的简单转换 RecyclerVie
  • 完全合格的域名是否需要句点?

    我对 FQDN 完全合格域名 感到困惑 FQDN 是否需要以句点结尾 喜欢sun or sun tuc noao edu or sun tuc noao edu 有什么不同 IT 的工作原理 域名 系统 https technet micr
  • Android:IllegalArgumentException:无法找到包含/data/data/的配置根目录

    刚刚进入 Android 的 Glide 图像加载库 使用这里的代码 https github com bumptech glide issues 459 https github com bumptech glide issues 459
  • 有人可以向我解释一下 Flutter 中 Builder 类的作用吗?

    该文档非常混乱和模糊 它是这样说的 建造者类 一个柏拉图式的小部件 它调用闭包来获取其子小部件 这是我的问题 他们所说的 柏拉图式 是什么意思 他们所说的 关闭 是什么意思 这堂课的目的到底是什么 经过长时间在互联网上进行的大量令人费解的研
  • Web 服务请求身份验证

    我们真的被困在这里所以我决定寻求你的帮助 昨天 我被要求帮助使用 Web 服务 获取 WSDL 的 URL 以及要使用的用户凭据 我从未真正与 Web 服务有任何关系 但对它们有一个总体了解并看到了一些示例 我认为它不会那么糟糕 显然我错了
  • 使用 nvcc 编译给出“没有这样的文件或目录”

    我正在尝试在 Ubuntu 上使用 nvcc 编译 CUDA 代码 但是 当我这样做时 我得到以下输出 gt make usr local cuda bin nvcc m64 ptxas options v gencode arch com
  • “main.cpp”在 Qt 项目中的作用

    在Qt项目中我们通常会找到一个project pro文件 该main cpp和几个标题 源和 ui文件 包含为应用程序 项目注入生命和功能的所有资源 如果还有更多的话 按下按钮即可显示 你好 世界 可能存在用于存储数据和配置文件等的目录 我
  • 有人知道我可以嵌入 WPF 窗口或 Windows 窗体中的代码编辑器吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想创建自己的 IDE 但我想要一个代码编辑器 语法高亮 我想将它作为控件嵌入到 WPF 窗口中 Malcolm The 夏普开发IDE
  • 在更新语句中获取最新的行版本/时间戳值 - Sql Server

    我正在使用 rowversion 列来处理乐观并发 并希望在完成更新后获取新的 rowversion 值 以便我的数据层具有最新值 并且可以通过获取并发异常来执行另一次更新 除非记录有已被其他人更新 我只是在更新后进入数据层 但这不是很有效
  • MVVM-light + RIA 服务最佳实践 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使 angular.js 路由长路径

    我正在使用 angular js 制作一个文件浏览器 所以 我会处理一些长网址 eg mydomain folder1 sub1 grand sub1 我只是学习 Angular 并发现 Angular 有 routeProvider 但是
  • Android:表没有名为“变量名称”的列 MySql 数据库错误

    当我尝试在数据库中添加新条目时 出现如下所示的错误 我现在已经搜索了几个小时 但无法发现问题所在 任何输入都会很棒 这里是来自 LogCat 的错误 02 27 23 02 51 451 E SQLiteLog 6777 1 table d
  • 如何在 phpstorm 中使用 phalcon-devtools\ide\phpstorm?

    我正在尝试将 Phalcon 开发人员工具与 phpstorm 集成 有一个视频在这里 http docs phalconphp com en 0 5 0 reference tools html integrating tools wit
  • 从 Visual Studio Code 调试 vue-cli 3 生成的应用程序

    我使用 vue cli 3 0 0 rc 3 生成了一个应用程序 现在我想使用 Visual Studio Code Chrome 调试器 对其进行调试 但是我似乎找不到打开 sourceMaps 的选项 我在 VSCode 中设置了断点
  • 单击按钮后重新绘制 JPanel

    我是 Java Swing 的新手 我有一个奇怪的问题需要刷新我的JPanel 我创建一个静态的JPanel我的框架中的组件 我从一个调用静态方法FileListenner重新粉刷我的JPanel public static void re
  • REST Web 服务版本控制实践

    我正在创建一个新的 Web 服务 并且我已经阅读了 APIgee 的一些电子书 其中建议对 Web 服务进行版本控制 我知道在 URL 与标头中保留版本控制信息之间存在一些 斗争 根据我所阅读和理解的内容 我想在标头中使用版本控制 我的问题
  • 使用 Nancy 返回包含有效 Json 的字符串

    我从另一个服务收到一个包含有效 JSON 的字符串 我只想与 Nancy 转发此字符串 但还将内容类型设置为 application json 这将使我无需在客户端使用 parseJSON data 如果我使用 Response AsJso
  • 你调用的对象是空的

    我使用以下代码来检查之前添加到复选框列表中的数据库表中的值 但在此处收到 对象引用未设置为对象的实例 错误 ListItem currentCheckBox chkbx Items FindByValue rdr MemberID ToSt