Передача условного предложения where через строковый параметр? (asp .net / c#) - PullRequest
0 голосов
/ 12 апреля 2020
foreach (ListItem lst in chkPrice.Items)
{
    if (lst.Selected)
    {
        if (lst.Value == "1")
        {
            P = ">=1 AND <=2000";
        }
        if (lst.Value == "2")
        {
            P = "BETWEEN 2000 AND 5000";
        }
        if (lst.Value == "3")
        {
            P = "BETWEEN 5000 AND 8000";
        }
        if (lst.Value == "4")
        {
            P = "Greater Than 8000";
        }

        P = P + "," + P;
        PS = true;
    }


Query = "Select * from tbl_Product WHERE Product_SalePrice IN (" + P + ") ";
ViewProductCode(Query);


<asp:CheckBoxList ID="chkPrice" runat="server" OnCheckedChanged="CheckBox_CheckedChanged" AutoPostBack="true">
    <asp:ListItem Text="&nbsp;&nbsp;PKR 0 - PKR 2000" Value="1"></asp:ListItem>
    <asp:ListItem Text="&nbsp;&nbsp;PKR 2000 - PKR 5000" Value="2"></asp:ListItem>`enter code here`
    <asp:ListItem Text="&nbsp;&nbsp;PKR 5000 - PKR 8000" Value="3"></asp:ListItem>
    <asp:ListItem Text="&nbsp;&nbsp;PKR 8000 and above" Value="4"></asp:ListItem>
</asp:CheckBoxList>

Как записать условие в параметре p-строки, чтобы передать его в запрос?

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020
 foreach (ListItem lst in chkPrice.Items)
            {
                if (lst.Selected)
                {
                    if (I > 0)

                    {
                        P = P + " OR Product_SalePrice";
                    }
                    switch (lst.Value)
                    {
                        case "1":
                            P += " BETWEEN 1 AND 2000";
                            break;
                        case "2":
                            P += " BETWEEN 2000 AND 5000 ";
                            break;
                        case "3":
                            P += " BETWEEN 5000 AND 8000";
                            break;
                        case "4":
                            P += " >= 8000";
                            break;

                    }
                    I++;
                    PS = true;
                }
            }

Query = "Выбрать * из tbl_Product, ГДЕ Product_SalePrice" + P + ""; ViewProductCode (запрос);

0 голосов
/ 13 апреля 2020

В флажке передаются только выбранные элементы. Так что вам не нужно проверять list.selected. И вместо использования всех этих if операторов используйте switch

p = '';
foreach (ListItem lst in chkPrice.Items) {
    switch(lst.Value) {
        case "1":
            P += " BETWEEN 1 AND 2000";
            break;
        case "2":
            P += " BETWEEN 2000 AND 5000";
            break;
        case "3":
            P += " BETWEEN 5000 AND 8000";
            break;
        case "4":
            P += " > 8000";
            break;
        default:
            // define a default behavious
            break;
    }
    if(lst.key != lst.length-1) {
        P += "OR Product_SalePrice"
    }
    PS = true;
}


Query = "Select * from tbl_Product WHERE Product_SalePrice " + P;
ViewProductCode(Query);
...