2011-05-17 88 views
1

我有一个从多个表中绘制的gridview,我想让它在三个字段中搜索,每个表中都有一个字段。我打算使用下拉菜单选择要搜索的字段,以及当然用于搜索输入的文本框,但是,那么呢?这是我在C#ASP.NET GridView控件代码:如何让gridview可搜索?

在页面上,代码隐藏使用DataView对象过滤格的行上
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" 
    EmptyDataText="There are no data records to display." AllowPaging="True" 
    BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" 
    CellPadding="3" GridLines="Vertical" HorizontalAlign="Center" 
    DataKeyNames="SubId" AllowSorting="True"> 
    <AlternatingRowStyle BackColor="#DCDCDC" /> 

    <Columns> 

     <asp:BoundField DataField="SubId" HeaderText="Submission ID" 
      SortExpression="SubId" > 
     <ItemStyle HorizontalAlign="Right" VerticalAlign="Middle" /> 
     </asp:BoundField> 
     <asp:BoundField DataField="CustName" HeaderText="Customer" 
      SortExpression="CustName" /> 
     <asp:BoundField DataField="CustCity" HeaderText="Customer City" 
      SortExpression="CustCity" /> 
     <asp:BoundField DataField="CustState" HeaderText="Customer State" 
      SortExpression="CustState" /> 
     <asp:BoundField DataField="BroName" HeaderText="Broker " 
      SortExpression="BroName" /> 
     <asp:BoundField DataField="BroState" HeaderText="Broker State" 
      SortExpression="BroState" /> 
     <asp:BoundField DataField="EntityType" HeaderText="EntityType" 
      SortExpression="EntityType" /> 
     <asp:BoundField DataField="Coverage" DataFormatString="{0:c}" 
      HeaderText="Coverage" SortExpression="Coverage" /> 
     <asp:BoundField DataField="Status" HeaderText="Status" 
      SortExpression="Status" /> 

     <asp:HyperLinkField DataNavigateUrlFields="SubId" 
      DataNavigateUrlFormatString="View.aspx?SubId={0}" Text="View" /> 
     <asp:HyperLinkField DataNavigateUrlFields="SubId" 
      DataNavigateUrlFormatString="ViewEdit.aspx?SubId={0}" Text="Edit" /> 

    </Columns> 
    <FooterStyle BackColor="#CCCCCC" ForeColor="Black" /> 
    <HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" /> 
    <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" /> 
    <RowStyle BackColor="#EEEEEE" ForeColor="Black" /> 
    <SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" /> 
    <SortedAscendingCellStyle BackColor="#F1F1F1" /> 
    <SortedAscendingHeaderStyle BackColor="#0000A9" /> 
    <SortedDescendingCellStyle BackColor="#CAC9C9" /> 
    <SortedDescendingHeaderStyle BackColor="#000065" /> 
</asp:GridView> 
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
    ProviderName="<%$ ConnectionStrings:ProductInstanceString.ProviderName %>" 


    SelectCommand="SELECT Customer.SubId, Customer.CustName, Customer.CustCity, Customer.CustState, Broker.BroName, Broker.BroState, Broker.EntityType, Submission.Coverage, Submission.Status FROM Submission INNER JOIN Broker ON Broker.SubId = Submission.SubmissionId INNER JOIN Customer ON Customer.SubId = Submission.SubmissionId"> 

</asp:SqlDataSource> 

回答

1

使用下拉菜单,请参见下面的语法:

DataView dvData = new DataView(dtData); 
dvData.RowFilter = "[ColumnName]=[Condition, this will be your dropdown value]"; 
gv.DataSource = dvData; 
gv.DataBind(); 
+0

三个问题,@Saurabh :一,dtData是什么(我扔的是“在当前上下文中不存在的错误”的错误),以及两个,我如何为多个字段执行此操作?复制块?三,我在哪里绑定文本框进行搜索? – 2011-05-17 12:57:39

+0

dtData是你的DataTable对象,gv是GridView对象,在你的情况下是“GridView1” [ColumnName]必须是你的gridview的列名,[Condition]必须是值的下拉文本或文本框的值。 – Saurabh 2011-05-17 13:01:35