传递列表框项的值以选择参数

本文关键字:选择 参数 列表 | 更新日期: 2023-09-27 18:22:06

我有一个带有多列表框的表单:

<asp:ListBox ID="lstAction" runat="server" Rows="3" SelectionMode="Multiple"></asp:ListBox>

我有一个存储过程,它从对象数据源获取数据,当传递一个值时,它可以正常工作

<asp:ObjectDataSource ID="odsSalesSC" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" TypeName="RapidFire.RFTableAdapters.USP_TOTAL_ORDERCALLSTableAdapter" OnSelecting="odsSalesSC_Selecting">
        <SelectParameters>
            <asp:ControlParameter ControlID="lstAction" Name="action" PropertyName="SelectedValue" Type="String" ConvertEmptyStringToNull="true" />                
        </SelectParameters>
    </asp:ObjectDataSource>

但是,当用户选择多个选项时,我会从选择中构建一个字符串,该字符串会传递到存储过程中,比如('a','b','c')中的内容。如何从strAction中获取要传递到select参数中的值?

protected void btnFilter_Click(object sender, EventArgs e)
    {            
        String strAction = String.Empty;           
        foreach (ListItem liAction in lstAction.Items)
        {
            if (liAction.Selected)
            {
                strAction += "'" + liAction.Value + "',";
            }
        }
        strAction = strAction.Substring(0, strAction.Length - 1);

传递列表框项的值以选择参数

string strYourIDs = "";
int[] yourSelectedIndexes = ListBox.GetSelectedIndices();
for (int i = yourSelectedIndexes.Length - 1; i >= 0; i--)
{
    strYourIDs += ListBox.Items[yourSelectedIndexes[i]].Value + ",";
}
if (strYourIDs != "")
    strYourIDs = strYourIDs.TrimEnd(",".ToCharArray());

从列表框中抓取选定的索引,然后循环并将它们添加到逗号分隔的strYourID中。然后切掉字符串末尾的最后一个逗号。现在,如果选择了三个值分别为1、2和3的项目,字符串将看起来像"1、2、3"。您可以在SQL中使用该字符串,方法是创建一个拆分字符串函数或其他可以拆分这些值的函数,然后您可以随心所欲地使用它们。