我有一个列表框,在加载页面时,我希望选择数据库中的选项/选项。我已经有一段时间没有使用列表框来做任何事情了,所以我有点困惑如何修复我的GetClassification函数的代码,这个函数就是这样做的。目前,它只选择列表框中的一个值,而不考虑与多个供应商id相关联。
这是GetClassification函数的代码:
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();
}
}
}
}发布于 2014-09-23 12:52:06
您必须循环所有项并相应地设置Selected-property:
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,则该构造函数包含两个参数:
md.Parameters.Add(new SqlParameter("@VendorId", VendorId));VendorId将传递给SqlDbType,并使用不同过载。相反,您应该显式地指定Value:
md.Parameters.Add(new SqlParameter("@VendorId", SqlDbType.Int) { Value = VendorId });编辑:这在备注-章节中也有记录
当您使用
SqlParameter构造函数的重载指定integer参数值时,请小心。由于此重载采用Object类型的值,因此当值为零时,必须将整值转换为对象类型,如下面的C#示例所示。
Parameter = new SqlParameter("@pname", (object)0); 如果不执行此转换,则编译器假定您正在尝试调用SqlParameter (string,SqlDbType)构造函数重载。
因此,这样做也是可行的:
md.Parameters.Add(new SqlParameter("@VendorId", (object) VendorId));发布于 2014-09-23 13:14:45
检查ListBox的SelectionMode属性是否为Multiple,这将启用多个选择。
e.g
<asp:ListBox ID="ListBox1" runat="server" SelectionMode="Multiple"></asp:ListBox>发布于 2022-08-31 16:43:20
如果有人在寻找如何从项目(集合)中选择多个值。您需要您的SelectionMode成为MultiSimple,然后这样做,例如
listBoxName.SetSelected(0, true);
listBoxName.SetSelected(1, true);在这种情况下,第1和第2值将被预选。
如果你需要一个更好的示例。
https://stackoverflow.com/questions/25995458
复制相似问题