Solved

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

Posted on 2007-11-14
8
225 Views
Last Modified: 2008-02-01
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
Comment
Question by:toshi_
  • 4
  • 4
8 Comments
 
LVL 10

Expert Comment

by:joex911
ID: 20280746
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
 

Author Comment

by:toshi_
ID: 20284446
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
 
LVL 10

Expert Comment

by:joex911
ID: 20288406
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
 

Author Comment

by:toshi_
ID: 20288851
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
How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

 
LVL 10

Expert Comment

by:joex911
ID: 20289327
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
 

Author Comment

by:toshi_
ID: 20302818
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
 
LVL 10

Accepted Solution

by:
joex911 earned 500 total points
ID: 20304134
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
 

Author Comment

by:toshi_
ID: 20326933
thanks a lot ,
i succeed with your help.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

This article introduced a TextBox that supports transparent background.   Introduction TextBox is the most widely used control component in GUI design. Most GUI controls do not support transparent background and more or less do not have the…
ASP.Net to Oracle Connectivity Recently I had to develop an ASP.NET application connecting to an Oracle database.As I am doing it first time ,I had to solve several problems. This article will help to such developers  to develop an ASP.NET client…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now