【问题标题】:How make many controlParameter to filter GridView in ASP.NET?如何在 ASP.NET 中制作多个 controlParameter 来过滤 GridView?
【发布时间】:2014-06-14 18:46:35
【问题描述】:

我尝试根据DropDownList的值过滤我的gridview的内容。我设法用 DropDownList 过滤了我的 gridview,但是如何用多个 DropDownList 过滤?

这是我的 aspx 代码:

<asp:SqlDataSource ID="SqlDataSourceName" runat="server" ConnectionString="<%$ ConnectionStrings:connexionBase %>"
                                SelectCommand="SELECT DISTINCT nom FROM Utilisateur"></asp:SqlDataSource>
                            <asp:SqlDataSource ID="SqlDataSourceEntite" runat="server" ConnectionString="<%$ ConnectionStrings:connexionBase %>"
                                SelectCommand="SELECT DISTINCT entite FROM Utilisateur"></asp:SqlDataSource>


<div style="height: 350px; width: 100%; overflow: auto;">
                <asp:GridView ID="GridView1" Width="100%" Height="100%" HeaderStyle-BackColor="#21e3f0"
                    HeaderStyle-ForeColor="White" runat="server" AutoGenerateColumns="false" DataSourceID="GridDataSource"
                    ShowHeader="true">
                    <Columns>
                        <asp:BoundField DataField="Nom" HeaderText="Nom" ItemStyle-Width="80" />
                        <asp:BoundField DataField="Objectif operationnel" HeaderText="Objectif Opérationnel"
                            ItemStyle-Width="150" />
                        <asp:BoundField DataField="Description activite" HeaderText="Description activité"
                            ItemStyle-Width="80" />
                        <asp:BoundField DataField="Entite" HeaderText="Entité" ItemStyle-Width="80" />
                        <asp:BoundField DataField="Debut" HeaderText="Début" ItemStyle-Width="30" />
                        <asp:BoundField DataField="Fin" HeaderText="Fin" ItemStyle-Width="30" />
                        <asp:BoundField DataField="Cle" HeaderText="Clé" ItemStyle-Width="30" />
                        <asp:BoundField DataField="MAP" HeaderText="Map" ItemStyle-Width="30" />
                        <asp:BoundField DataField="SNS" HeaderText="SNS" ItemStyle-Width="30" />
                    </Columns>
                </asp:GridView>
            </div>
            <!-- SQL DataSource avec un filterExpression pour filter le tableau selon la valeur des ListBox choisi-->
            <asp:SqlDataSource ID="GridDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:connexionBase %>"
                SelectCommand="SELECT [Nom], [Objectif operationnel], [Description activite], [Entite], [Debut], [Fin], [Cle], [MAP], [SNS] FROM reponse"
                FilterExpression="Nom = '{0}'">
                <FilterParameters>
                    <asp:ControlParameter Name="Nom" ControlID="NomPersonne" PropertyName="SelectedValue"
                        ConvertEmptyStringToNull="false" />
                    <asp:ControlParameter Name="Nom" ControlID="NomEntite" PropertyName="SelectedValue"
                        ConvertEmptyStringToNull="false" />
                </FilterParameters>
            </asp:SqlDataSource>

编辑:我的 DropDownList 控件(由用户选择值以过滤 gridview)

<asp:DropDownList ID="NomPersonne" runat="server" AutoPostBack="True" DataSourceID="SqlDataSourceName"
                                DataTextField="nom" DataValueField="nom" AppendDataBoundItems="true" CssClass="DropDownList">
                                <asp:ListItem Text="" Value="" />
                            </asp:DropDownList>

<asp:DropDownList ID="NomEntite" runat="server" AutoPostBack="True" DataSourceID="SqlDataSourceEntite"
                                DataTextField="entite" DataValueField="entite" AppendDataBoundItems="true" CssClass="DropDownList">
                                <asp:ListItem></asp:ListItem>
                            </asp:DropDownList>

【问题讨论】:

  • 您的下拉列表在哪里?
  • 我在第一篇文章中更新了我的代码

标签: c# asp.net gridview


【解决方案1】:

您的过滤器表达式应如下所示:

   FilterExpression="Nom like '%{0}%' OR Entite like '%{1}%'">

表达式可能会有所不同,具体取决于您的字段的数据类型和您的条件, 例如,如果您的数据字段值是 整数 并且条件是 AND,那么您可能会有这样的情况:

   FilterExpression="Nom={0} AND Entite={1}"> 

您还应该在&lt;FilterParameters&gt; 上为这样的 Name 属性设置一个正确的名称:

   <FilterParameters>
         <asp:ControlParameter Name="Nom" ControlID="NomPersonne" 
                PropertyName="SelectedValue" ConvertEmptyStringToNull="false" />
         <asp:ControlParameter Name="Entite" ControlID="NomEntite" 
                PropertyName="SelectedValue" ConvertEmptyStringToNull="false" />
   </FilterParameters>

【讨论】:

  • 感谢非常有用!我有最后一个问题:如果我想添加第三个 controlParameter,我必须写:FilterExpression="Nom like '%{0}%' AND Entite like '%{1}%' ANDthirdparameter like '%{ 2}%'"> ?
  • 谢谢,但我添加了 3 个条件 (AND),之后,它不起作用...看:FilterExpression="Nom like '%{0}%' AND Entite like '%{1} %' AND Origine like '%{2}%' AND ObjectifStrategique like '%{3}%' AND Cle like '%{4}%' AND MAP like '%{5}%' AND SNS like '%{6} %'">
  • 在管理工作室中测试您的查询,然后在 gridview 中使用它,并确保带有所选值的查询将为您提供所需的结果,然后如果管理工作室的结果不同,请检查所有分配控件并确保它们设置正确。
猜你喜欢
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 2021-11-21
  • 2023-03-04
  • 1970-01-01
相关资源
最近更新 更多