[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 260
  • Last Modified:

i've display a dataTable in a repeater, how can filter the display?

i 'd like to be able to filter depending the header that was pressed on
a table displayed after a repeater?
the repeater repeats the  table rows.

i think there must be a solution somewhere, i need the link.
0
toshi_
Asked:
toshi_
  • 4
  • 4
1 Solution
 
Oliver AmayaEntrepeneurCommented:
Hi, I'm not sure exactly how you're doing the handling of the datatable and repeater, in any case you should be able to cause a postback when a header is clicked, and to filter the datatable use the RowFilter property of the DefaultView:

myDataTable.DefaultView.RowFilter = "lastname = 'smith'";

http://msdn2.microsoft.com/en-us/library/system.data.dataview.rowfilter(vs.71).aspx
0
 
toshi_Author Commented:
hi joex911,

do you like porshe cars?
here 's the way i'm handling the datatable and repeater.


html
----------------------------------------------------------------------------------------------------------------
<TABLE>
  <TR>
      <TD class="td_ca_ecolog_6">level min</TD>
      <TD class="td_ca_ecolog_7">volume</TD>
  </TR>
</TABLE>

<asp:Panel id="panelEcologsZoneWrapper" class="cu_ecologZoneWrapper" runat="server">
      <table id="sub_account_zone" border="1px" >
            <asp:Repeater ID="repEcolog" Runat="server" OnItemDataBound="treatItem" >
                  <ItemTemplate>
                        <tr style="over:red;color:grey;" onmouseover="this.className='over'" onmouseout="this.className=''">
                                     <td class="td_ca_ecolog_5">&nbsp;<%# DataBinder.Eval(Container.DataItem, "depth_min") %></td>
                              <td class="td_ca_ecolog_6">&nbsp;<%# DataBinder.Eval(Container.DataItem, "volume") %></td>
                              </tr>
                        </ItemTemplate>
                  </asp:Repeater>
            </table>      
</asp:Panel>
----------------------------------------------------------------------------------------------------------------
code behind:
....
      repEcolog.DataSource = controller_.FetchEcologList();      
      repEcolog.DataBind();
....
i have a table for headers because i want them fix, when i scroll the values.
my controller return the dataTable right to the repeater, but i could get it to a local dataTable of the page
(would it make it faster instead of recreating a method in controller?)
what i need to know is where to launch the filter, with javascript on the header
something out of the repeater ?

i need to reorder increasing or decreasing, i want my header links as toogle buttons, once click filter increasing,
once clicked again filter decreasing.


note: you can see that i have a treatItem method, it's empty it's doing anything.

0
 
Oliver AmayaEntrepeneurCommented:
Ok, so what you want to do is sort the table in ascending or descending order, not filter the results? I think that for this it be easier if you use a DataGrid control (.NET 1.1) or a GridView control (.NET 2.0), they provide the means to add the sorting functionality to your data.

http://dotnetjunkies.com/Article/B7C5AB3C-4D2E-4800-A071-6F40D57699C3.dcik
http://aspnet.4guysfromrolla.com/articles/052202-1.aspx
0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
toshi_Author Commented:
i'm gonna try with dataGrid as i'm using .NET 1.1

hem! anywas, is there a possibility to do ti via my poor repeater?
0
 
Oliver AmayaEntrepeneurCommented:
You could do it with the repeater, maybe use a asp:hyperlink for the headers off each column, then on the click event apply a sort to your datatable, also you need to keep track in a session variable if it should be ascending (ASC) or descending (DESC):


if(session["SortDir"].ToString() == "ASC")
  DataTable.Sort = "Column DESC";
else
  DataTable.Sort = "Column ASC";

Open in new window

0
 
toshi_Author Commented:
shure, i found that
dtTemp.DefaultView.Sort = "weight DESC";
would sort my table on my weight column,

but how to fire the event to be able to sort this in code behind?
i can not add event to the hyperlink, only javascript.
0
 
Oliver AmayaEntrepeneurCommented:
If you use an asp:linkbutton you should be able to use its onclick event on your code-behind.
<asp:linkbutton id="LinkButton1" runat="server">Link Test</asp:linkbutton>
 
private void LinkButton1_Click(object sender, System.EventArgs e)
{
  // code to sort your table
}

Open in new window

0
 
toshi_Author Commented:
thanks a lot ,
i succeed with your help.
0

Featured Post

Take Control of Web Hosting For Your Clients

As a web developer or IT admin, successfully managing multiple client accounts can be challenging. In this webinar we will look at the tools provided by Media Temple and Plesk to make managing your clients’ hosting easier.

  • 4
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now