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

时间:2014-09-15 16:38:42

标签: c# listbox objectdatasource

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

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

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

<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>

但是当用户选择多个选项时,我已经从选择中构建了一个字符串,该字符串会传递到存储过程中,例如(&#39; a&#39;,&#39; b&#39;,&#39; C&#39)。 如何从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);

1 个答案:

答案 0 :(得分:0)

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());

从列表框中抓取选定的索引然后循环并将它们添加到逗号分隔的strYourIDs中。然后切断字符串末尾的最后一个逗号。现在,如果使用值1,2和3选择了三个项目,则字符串看起来像&#34; 1,2,3&#34;。您可以通过创建拆分字符串函数或拆分这些值的东西在SQL中使用该字符串,您可以随意使用它们。