我有这个问题,我试图解决,但没有成功。我有一项输入研究,可以在其中进行关键字研究。我有一个代表不同主题(物流,管理,财务...)的checkBoxList来过滤查询。如果我的关键字是“问题”,并且选中“管理”复选框,则结果将仅是与管理相关的“问题”。它工作正常,但如果我不选中任何复选框,则会将我引导到OdbcException。我试图用try catch处理它,但是它被完全忽略了,它没有执行,仍然出现错误。
这是我用于清单列表研究的代码:
<asp:CheckBoxList ID="CheckboxID" runat="server" OnSelectedIndexChanged="CheckboxID_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Value="ADV"> ADV </asp:ListItem>
<asp:ListItem Value="Logistique"> Logistique </asp:ListItem>
<asp:ListItem Value="Finance"> Finance </asp:ListItem>
<asp:ListItem Value="EDI"> EDI </asp:ListItem>
<asp:ListItem Value="Administration"> Administration </asp:ListItem>
</asp:CheckBoxList>
<label for="tbSearch">Recherche : </label>
<asp:TextBox ID="tbSearch" runat="server"></asp:TextBox>`
protected void Populate()
{
Occurence = 0;
string word = tbSearch.Text;
string strSql = @"SELECT CAST(ID as VarChar(50)) ID, Aggregation, DateDerniereSolution, DateDescription, DerniereSolution, DescriptionDemande, FileDeTraitement, NomContact, Numero, SousRubrique, TitreDemande
FROM cfao_DigiHelp_index.DigiHelpData WHERE ( 1 = 1 )";
string selectedValue = "";
bool IsFirst = false;
strSql += @" AND (";
foreach (ListItem item in CheckboxID.Items)
{
if (item.Selected)
{
selectedValue = item.Value ;
if (IsFirst)
{
strSql += " OR ";
}
strSql += " SousRubrique Like '%" + selectedValue + "%' ";
IsFirst = true;
}
}
strSql += @" )";
编辑:得到另一个pb,如果我不选中任何复选框而我输入一个词,则导致我遇到相同的错误,尝试一切使它正常工作,我会发疯
有任何想法吗 ?
如果您未选中任何复选框,则情况将AND ()
导致异常。用这个:
string strSql = @"SELECT CAST(ID as VarChar(50)) ID, Aggregation, DateDerniereSolution, DateDescription, DerniereSolution, DescriptionDemande, FileDeTraitement, NomContact, Numero, SousRubrique, TitreDemande
FROM cfao_DigiHelp_index.DigiHelpData";
if (CheckboxID.Items.Cast<ListItem>().Any(x => x.Selected))
{
List<string> conditionList = CheckboxID.Items.Cast<ListItem>().Where(x => x.Selected).Select(item => " SousRubrique Like '%" + item.Value + "%' ").ToList();
strSql += " WHERE (" + string.Join(" OR ", conditionList) + " )";
}
仅当至少选中一个复选框时,它才会连接字符串。
您需要using System.Linq;
在文件之上添加
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句