gpt4 book ai didi

C# 从复选框添加到列表对象

转载 作者:太空狗 更新时间:2023-10-29 21:58:13 25 4
gpt4 key购买 nike

我确信之前有人问过这个问题,但我并不是在寻找合适的术语或其他东西,因为我似乎找不到我要找的东西。

我有一个类包:

class Packages
{
string PackageID {get; set;}
string PackageName { get; set; }
}

我的上下文中有一个包列表。

public class TransferJobContext
{
public string ImportFile;
public string WorkSheetName;
public DataSet TransferData;
public List<Packages> Packages = new List<Packages>();
}

我的表单上有一个绑定(bind)到数据源的 checkedListBox。这是我将值放入 checkedListBox 的代码部分

using (var connection = my_DB.GetConnection())
{
try
{
connection.Open();
SqlDataReader rdr = null;
dt = new DataTable();
string CommandText = "SELECT ID, Name FROM TABLENAME WHERE UPPER(Import_File_Source) LIKE '%abc%' and STATUS = 1";

SqlCommand cmd = new System.Data.SqlClient.SqlCommand(CommandText, connection);

rdr = cmd.ExecuteReader();
dt.Load(rdr);
cbPackages.DataSource = dt;
cbPackages.ValueMember = "ID";
cbPackages.DisplayMember = "Name";

}
catch (Exception E)
{
MessageBox.Show(E.Message.ToString());
}
connection.Close();
}

当使用所选项目的值成员和显示成员检查项目时,如何将新包添加到列表中?

编辑: 好吧,也许我的做法完全错了。我不会告诉您我做了什么,而是会告诉您我希望发生什么。

我向我的用户展示了一个选中的列表框,其中包含一个名称列表,旁边有复选框。他们可以选择多个。这导致我在查询中使用一个或多个 ID,并使用名称作为描述。我需要在我的上下文中传递我的“包”的一个或多个 ID/名称组合。

捕获用户所做选择的 ID/名称组合并将它们传递到我的上下文中的最佳方法是什么?

最佳答案

首先:从您的数据库中获取现有的包:

public function GetPackages() as List<Package>
{
using (var connection = my_DB.GetConnection())
{
try
{
connection.Open();
SqlDataReader rdr = null;
dt = new DataTable();
string CommandText = "SELECT ID, Name FROM TABLENAME WHERE UPPER(Import_File_Source) LIKE '%abc%' and STATUS = 1";

SqlCommand cmd = new System.Data.SqlClient.SqlCommand(CommandText, connection);

var packages = new List<Package>();
using(var reader = cmd.ExecuteReader())
{
do while(reader.Read())
{
packages.Add(new Package({ID = reader.GetString(0), Name = reader.GetString(1)})
}
}

cbPackages.DataSource = packages;
cbPackages.ValueMember = "ID";
cbPackages.DisplayMember = "Name";
return packages;
}
catch (Exception E)
{
MessageBox.Show(E.Message.ToString());
return new List<Package>();
}
connection.Close();
}

第二:将获取的包分配给您的上下文实例:

yourContext.Packages = GetPackages();

第三:用您的包裹填充 CheckedListBox:

cbPackages.DataSource = yourContext.Packages;
cbPackages.ValueMember = "ID";
cbPackages.DisplayMember = "Name";

最后:在用户输入后,获取已检查的包并用它们做任何你想做的事:

foreach (Package  item in checkedListBox1.CheckedItems)
{
MessageBox.Show(Package.ID);
MessageBox.Show(Package.Name);
//do whatever you want here e.g. pass it back to the context
}

旁注:我建议您将 Packages 重命名为 Package,将 PackageID 重命名为 IDPackageNameName(示例代码中已经提出)。

关于C# 从复选框添加到列表对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18015407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com