首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据数据库值预选列表框中的多项

根据数据库值预选列表框中的多项
EN

Stack Overflow用户
提问于 2014-09-23 12:44:58
回答 3查看 2K关注 0票数 3

我有一个列表框,在加载页面时,我希望选择数据库中的选项/选项。我已经有一段时间没有使用列表框来做任何事情了,所以我有点困惑如何修复我的GetClassification函数的代码,这个函数就是这样做的。目前,它只选择列表框中的一个值,而不考虑与多个供应商id相关联。

这是GetClassification函数的代码:

代码语言:javascript
复制
protected void GetClassification(int VendorId)
{
    using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
    {
        SqlCommand cmd = new SqlCommand("SELECT uidClassification FROM Baird_Vendors_Extension WHERE uidVendor = @VendorId", cn);
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.Add(new SqlParameter("@VendorId", VendorId));
        cn.Open();
        using (IDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                vendorType.SelectedValue =reader["uidClassification"].ToString();
            }
        }
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-23 12:52:06

您必须循环所有项并相应地设置Selected-property:

代码语言:javascript
复制
List<string> uidClassificationList = new List<string>();
using (IDataReader reader = cmd.ExecuteReader())
{
    while (reader.Read())
    {
        int column = reader.GetOrdinal("uidClassification");
        uidClassificationList.Add(reader.GetInt32( column ).ToString());
    }
}
foreach(ListItem item in vendorType.Items)
    item.Selected = uidClassificationList.Contains(item.Value);

除此之外,您应该小心使用SqlParameter构造函数,如果第二个参数是如下所示的int,则该构造函数包含两个参数:

代码语言:javascript
复制
md.Parameters.Add(new SqlParameter("@VendorId", VendorId));

VendorId将传递给SqlDbType,并使用不同过载。相反,您应该显式地指定Value

代码语言:javascript
复制
md.Parameters.Add(new SqlParameter("@VendorId", SqlDbType.Int) { Value = VendorId });

编辑:这在备注-章节中也有记录

当您使用SqlParameter构造函数的重载指定integer参数值时,请小心。由于此重载采用Object类型的值,因此当值为零时,必须将整值转换为对象类型,如下面的C#示例所示。

代码语言:javascript
复制
Parameter = new SqlParameter("@pname", (object)0); 

如果不执行此转换,则编译器假定您正在尝试调用SqlParameter (string,SqlDbType)构造函数重载。

因此,这样做也是可行的:

代码语言:javascript
复制
md.Parameters.Add(new SqlParameter("@VendorId", (object) VendorId));
票数 2
EN

Stack Overflow用户

发布于 2014-09-23 13:14:45

检查ListBox的SelectionMode属性是否为Multiple,这将启用多个选择。

e.g

代码语言:javascript
复制
<asp:ListBox ID="ListBox1" runat="server" SelectionMode="Multiple"></asp:ListBox>
票数 0
EN

Stack Overflow用户

发布于 2022-08-31 16:43:20

如果有人在寻找如何从项目(集合)中选择多个值。您需要您的SelectionMode成为MultiSimple,然后这样做,例如

代码语言:javascript
复制
listBoxName.SetSelected(0, true);
listBoxName.SetSelected(1, true);

在这种情况下,第1和第2值将被预选。

如果你需要一个更好的示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25995458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档