2012-04-20 67 views
1

我有我的網頁上5複選框,並與模板字段網格視圖,我沒有使用在頁面加載我綁定一個表的所有數據網格中的任何債券領域,我想根據檢查過濾數據盒子檢查。基於GridView之外的複選框過濾GridView數據?

假設:我喜歡A B C D.全部複選框複選框超出網格視圖的側面。當用戶選中複選框A,然後在網格視圖,複選框相關數據應顯示,像明智的B C和D.

該怎麼辦?有人請給一些示例代碼和比特邏輯。

這將是巨大的,如果我能過濾gridview的沒有任何回發。

網:

<asp:GridView ID="GridView1" runat="server" 
       AutoGenerateColumns="False" CellPadding="3"> 
     <Columns> 
      <asp:TemplateField HeaderText="ID" SortExpression="ID"> 
      <ItemTemplate> 
       <asp:Label ID="lblId" runat="server" Text='<%#Eval("Id") %>'></asp:Label> 
      </ItemTemplate>       
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Discription" SortExpression="Discription"> 
      <ItemTemplate> 
       <asp:Label ID="lblDiscription" runat="server" Text='<%#Eval("Discription") %>'></asp:Label> 
      </ItemTemplate>       
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Address" SortExpression="Address"> 
      <ItemTemplate> 
      <asp:Label ID="lblAddress" runat="server" Text='<%#Eval("Address") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

綁定網格:

TestPageDao page1Dao = new TestPageDao(); 

if (!IsPostBack) 
{ 
    IList<TestDAO> TestDAO = page1Dao.GetAlldata(); 
    GridView1.DataSource = TestDAO; 
    GridView1.DataBind(); 
} 

我試圖Filter gridviewhttp://forums.asp.net/p/1034014/2904713.aspx

+0

請別人幫我... – Rocky 2012-04-25 04:11:28

回答

2

如果你想避免回傳,用了jQuery喜歡這裏: http://jquerybyexample.blogspot.com/2012/04/how-to-filter-gridview-records-using.html

替代我但是在故事的結尾,它是一種類似回傳的方法。

最後使用回發,您可以通過動態設置GridView過濾器GridView加載之前以幾種方式來完成。這可以通過頁面加載事件,相關數據源的OnSelecting(如果有)或類似來實現。

這是ASPX的提取:

<asp:CheckBox ID="CheckBox1" runat="server" Text="A" /> 
<asp:CheckBox ID="CheckBox2" runat="server" Text="B" /> 
<asp:CheckBox ID="CheckBox3" runat="server" Text="C" /> 
<asp:CheckBox ID="CheckBox4" runat="server" Text="D" /> 
<hr /> 

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
    DataSourceID="sqlDataSourceGridView" AutoGenerateColumns="False" 
    CssClass="GridViewStyle" GridLines="None" Width="650px" > 
    <Columns> 
     <asp:BoundField DataField="CompanyName" HeaderText="Company" ItemStyle-Width="200px" /> 
     <asp:BoundField DataField="ContactName" HeaderText="Name" ItemStyle-Width="125px"/> 
     <asp:BoundField DataField="City" HeaderText="city" ItemStyle-Width="125px" /> 
     <asp:BoundField DataField="Country" HeaderText="Country" ItemStyle-Width="125px" /> 
    </Columns> 
</asp:GridView> 

<asp:SqlDataSource ID="SqlDataSourceGridView" runat="server" 
    ConnectionString="<%$ ConnectionStrings:northWindConnectionString %>" 
    SelectCommand="SELECT [CustomerID], [CompanyName], [ContactName], [City], [Country] FROM [Customers]" 
    OnSelecting="SqlDataSourceGridView_Selecting"> 
<FilterParameters> 
    <asp:ControlParameter ControlID="checkbox1" Name="CompanyName" PropertyName="Checked" ConvertEmptyStringToNull="false" /> 
</FilterParameters> 
</asp:SqlDataSource> 

注意OnSelecting事件,並指出,沒有任何過濾器預設。

現在後面的代碼中動態地設置過濾器:

protected void SqlDataSourceGridView_Selecting(object sender, SqlDataSourceSelectingEventArgs e) { 
    SqlDataSourceGridView.FilterExpression = string.Empty; 
    if (CheckBox1.Checked) { 
     SqlDataSourceGridView.FilterExpression += "(CompanyName=1)"; 
    } 
    if (CheckBox2.Checked) { 
     if (!string.IsNullOrEmpty(SqlDataSourceGridView.FilterExpression)) SqlDataSourceGridView.FilterExpression += " OR "; 
     SqlDataSourceGridView.FilterExpression += "(B=1)"; 
    } 
    if (CheckBox3.Checked) { 
     if (!string.IsNullOrEmpty(SqlDataSourceGridView.FilterExpression)) SqlDataSourceGridView.FilterExpression += " OR "; 
     SqlDataSourceGridView.FilterExpression += "(C=1)"; 
    } 
    if (CheckBox4.Checked) { 
     if (!string.IsNullOrEmpty(SqlDataSourceGridView.FilterExpression)) SqlDataSourceGridView.FilterExpression += " OR "; 
     SqlDataSourceGridView.FilterExpression += "(D=1)"; 
    } 
} 

如果你不喜歡OnSelecting事件,你可以做同樣的pageLoad的:

protected void Page_Load(object sender, EventArgs e) { 
    // here same code of above 
    // . . . 
} 

我沒有」對其進行測試,以便驗證小錯誤。

+0

我能做到這一點,而無需使用數據源,其實我正在從我的DAO的記錄,並結合電網在頁面加載,PLZ看到我更新答。 – Rocky 2012-04-23 06:49:17

+0

請你告訴我,在A = 1,B = 1是什麼1.我做相同的,但過濾不工作 – Rocky 2012-04-26 12:45:57

+0

和檢查我想提出的複選框,然後檢查其還沒有發射 – Rocky 2012-04-26 12:57:03