Ваш источник данных выбирает только 1 запись. ListBox
вернет первое значение, если вы используете множественный выбор ListBox
как ControlParameter
.
(tblCompany.compDataID = @compDataID)
То, что вы хотите сделать, это иметь что-то с оператором IN
, таким как
(tblCompany.compDataID in @compData)
Возможно, вам нужно что-то сделать в коде позади.
<asp:ListBox ID="ListBox1" runat="server"
AutoPostBack="True"
DataTextField="compName"
DataSourceID="SqlDataSource11"
DataValueField="compDataID"
OnSelectedIndexChanged="ListBox1_SelectedIndexChanged"
SelectionMode="Multiple">
</asp:ListBox>
Код позади
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string s = string.Empty;
foreach (ListItem li in ListBox1.Items)
{
if (li.Selected == true)
s += li.Value + ",";
}
if (s != string.Empty)
{
s = s.Substring(0, s.Length - 2); // chop off trailing ,
SqlDataSource2.SelectParameters["compData"].DefaultValue = s;
}
}
ПРИМЕЧАНИЕ это не было проверено, но это один из вариантов, который вы можете попробовать. В основном вы хотите, чтобы IN
не =
для вашего выбора, чтобы получить все результаты.