Search Results

Search found 4222 results on 169 pages for 'dojox grid'.

Page 55/169 | < Previous Page | 51 52 53 54 55 56 57 58 59 60 61 62  | Next Page >

  • checkbox selected value is lost after coming back to the pagei.e., viewstate value is lost with use

    - by M.Vijay bhasker
    In the left navigation i have a series of check boxes and a grid view in the page body.Grid view results changes based on the check box selection,whenever i click on the links in grid view it goes to the second page and there is a link on the page which takes me back to the first page,but the check box selected value is maintained for the first time only and if we repeat the same process for the second time and i see that the first time selection of the check box is maintained.Here the grid view is placed in update panel and the check box in the left is called using .... AsyncPostBackTrigger ControlID="cphLeftNavigation". I've tried removing the above code referring the cphLeftNavigation and i see the results are coming up correctly and the last selected check box value is being maintained correctly and i want the same functionality to be implemented with/without update panel. Can anyone let me know,what exactly should i change to implement the above mentioned functionality.

    Read the article

  • Remember (persist) the filter, sort order and current page of jqGrid

    - by Jimbo
    My application users asked if it were possible for pages that contain a jqGrid to remember the filter, sort order and current page of the grid (because when they click a grid item to carry out a task and then go back to it they'd like it to be "as they left it") Cookies seem to be the way forward, but how to get the page to load these and set them in the grid before it makes its first data request is a little beyond me at this stage. Does anyone have any experience with this kind of thing with jqGrid? Thanks!

    Read the article

  • how to switch views according to command

    - by Veer
    I've a main view and many usercontrols. The main view contains a two column grid, with the first column filled with a listbox whose datatemplate consists of a usercontrol and the second column filled with another usercontrol. These two usercontrols have the same datacontext. MainView: <Grid> //Column defs ... <ListView Grid.Column="0" ItemSource="{Binding Foo}"> ... <DataTemplate> <Views: FooView1 /> </DataTemplate> </ListView> <TextBlock Text="{Binding Foo.Count}" /> <StackPanel Grid.Column="1"> <Views: FooView2 /> </StackPanel> <Grid> FooView1: <UserControl> <TextBlock Text="{Binding Foo.Title}"> </UserControl> FooView2: <UserControl> <TextBlock Text="{Binding Foo.Detail1}"> <TextBlock Text="{Binding Foo.Detail2}"> <TextBlock Text="{Binding Foo.Detail3}"> <TextBlock Text="{Binding Foo.Detail4}"> </UserControl> I've no IDE here. Excuse me if there is any syntax error When the user clicks on a button. These two usercontrols have to be replaced by another two usercontrols, so the datacontext changes, the main ui remaining the same. ie, FooView1 by BarView1 and FooView2 by BarView2 In short i want to bind this view changes in mainview to my command (command from Button) How can i do this? Also tell me if i could merge the usercontrol pairs, so that only one view exists for each viewmodel ie, FooView1 and FooView2 into FooView and so on...

    Read the article

  • WPF Single Selection Across Multiple ItemsControls

    - by gregsdennis
    Part of my app has a month-view calendar interface, but I'm having trouble with item selection. The interface is set up so that each of the days in the view contains a ListBox of items, much like the month view in Outlook. The problem I'm experiencing is that I need to maintain a single item selection across all of the ListBoxes. Below is a sample window that should adequately describe my situation. I need to maintain a single selection between both ListBoxes. <Window x:Class="StackOverflow.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <ListBox ItemsSource="{Binding Numbers}" SelectedItem="{Binding SelectedObject"/> <ListBox Grid.Column="1" ItemsSource="{Binding Dates}" SelectedItem="{Binding SelectedObject"/> </Grid> </Window> In this primitive example, I would expect that when the SelectedObject property of my view model gets set to an item that's not in one ListBox, the selection would be removed in that ListBox, but that doesn't happen. I understand that I can simply name each ListBox, and hook into the SelectionChanged event. I'd prefer to not have to do that with an entire month-view calendar. There has to be a better way. In a previous iteration of the app, I was able to create a SelectionManager static class with an attached property that was used to maintain selection. However, I can't use this now as the classes I'm using for my items are not DependencyObjects, and I'd really prefer not to have to create DependencyObject wrapper classes as this will considerably complicate my architecture. Thanks.

    Read the article

  • Java multidimensional array and scanner novice Q

    - by Max
    I'm new to Java and trying to in essence implement a grid with a character, and if the user inputs 'w' 'a' 's' or 'd' the character moves up/down/left/right within the plane. I created a multidimensional array sized 10x10 public static String[][] grid = new String[10][10]; And then just used a for loop to print "*"s in a 10x10 grid, except for grid[a][b] which is equal to character "A" i.e. my thing to be moved around. That seemed to work alright, then I needed to detect the 'wasd' input from the user so I set up a: Scanner in = new Scanner (System.in); while (in.hasNext()) And I had then: String s = in.next(); char ch = s.charAt(0); switch (ch) but I couldn't make this work, and it wasn't because I didn't complete the "switch" statement, I did, I just see it void copying and pasting the entire thing. I'm sure its incredibly easy slight thing I am missing, can you please point it out for me?

    Read the article

  • Asp.Net Cookie sharing

    - by SH
    This is C#.Net code: How to share Cookie between 2 HttpWebRequest calls? Details: I am posting a form in first request, this form contains some setting variables which are used by the system. lets say there is a input field in the form which sets the size of grid pages to be displayed in other pages. Once i have updated the setings in previous request, i go to send a request to another page which shows off asp.net gridview/grid. The grid might contaian several pages and the page size should be the one which i set in previous request. But when i do this via HttpWebReeust it does not happen. When i do it via browser, loading the setting page in the browser and then going to the grid view page... i see the page size is updated. I want to achieve this via code. Sicne i am scraping this grid. i have to set page size or visit the gird pages one by one via code. Or is it possible to set a cookie on 2nd request which is used to set in first request? It will be great if i go this way. any solution?

    Read the article

  • How to resize a group of vectors in Expression Blend/WPF/Silverlight ?

    - by Shnitzel
    So say for example I created a few small squares in expression blend. I then group them together by selecting them, right clicking and selecting "Group Into - Grid" So now that they are in the grid, I'd like to be able to resize this grid and then they would resize but it doesn't happen, it just resizes the grid but leaves the vectors the same. Is there a way to do what I am looking for? p.s I know you can just select all the vectors and then resize them all, but I am looking for a way to just resize one container and not all the objects in there..

    Read the article

  • Can you override just part of a control template in silverlight

    - by mattmanser
    Is it possible to change or modify a specific part of a control template without having to recreate the entire control template of the control in the xaml? For example, I was trying to get rid of the border of a textbox, so I could throw together a basic search box with rounded corners (example xaml below). Setting the borderthickness to 0 works fine, until you mouse over the textbox and a pseudo border they added to the control flashes up. If I look at the controltemplate for the textbox, I can even see the visual state is named, but cannot think of how to disable it. Without overriding the control template of the TextBox, how would I stop the Visual State Manager firing the mouse over effect on the TextBox? <Border Background="White" CornerRadius="10" VerticalAlignment="Center" HorizontalAlignment="Center" BorderThickness="3" BorderBrush="#88000000"> <Grid VerticalAlignment="Center" HorizontalAlignment="Center" Width="200" Margin="5,0,0,0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="16" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Path Height="13" Width="14" Stretch="Fill" Stroke="#FF000000" StrokeThickness="2" Data="M9.5,5 C9.5,7.4852815 7.4852815,9.5 5,9.5 C2.5147185,9.5 0.5,7.4852815 0.5,5 C0.5,2.5147185 2.5147185,0.5 5,0.5 C7.4852815,0.5 9.5,2.5147185 9.5,5 z M8.5,8.4999971 L13.5,12.499997" /> <TextBox GotFocus="TextBox_GotFocus" Background="Transparent" Grid.Column="1" BorderThickness="0" Text="I am searchtext" Margin="5,0,5,0" HorizontalAlignment="Stretch" /> </Grid> </Border>

    Read the article

  • Simple OOP-related question.

    - by M4design
    This question came to my mind quite a few times. Let my explain my question through an example. Say I've got two classes: 1- Grid. 2- Cell. Now the location of the cell 'should' be stored in the grid class, not in the cell class itself. Say that the cell wanted to get its location through a method in the grid. How can it do that? Keep in mind that the cell was created/initialised by the Grid class. What good OO approach to solve this problem? Thank you

    Read the article

  • Data confusion - Selecting data in one DataGridView based on selection in another

    - by Logan Young
    This probably isn't the best way to do what I want, but I can't think of anything else to try... NB: I'm using Visual Basic.NET My form has 2 DataGridView controls. One of these is bound to a DataSet, the other isn't visible - at least not until the user selects a uniqueidentifier cell in the 1st grid. When the user makes this selection, the 2nd grid will become visible and display the row from another with the same id as the one selected in the 1st grid. So, basically, I want to dynamically display data in one grid based on user selection in another grid. My code looks like this so far... Private Sub RulesGrid_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles RulesGrid.CellClick Try FlagsGrid.Visible = True ''// MsgBox(RulesGrid.CurrentCell.Value.ToString()) Dim sql As String = "SELECT * FROM ctblMKA_Status_Flags " + _ "WHERE intStatusID = '" & RulesGrid.CurrentCell.Value & "'" DSFlags = GetDS(sql) DSFlags.DataSetName = "FlagsDataSet" FlagsGrid.DataSource = DSFlags ProgressBar.Visible = False Catch ex As Exception MsgBox(ex.ToString) End Try End Sub I feel like I'm missing something here... Any ideas anyone?

    Read the article

  • Getting Top (starting no , Ending no) rows from sqlserver

    - by Krishna Thota
    I'm using Grid view in my asp.net page and I'm fetching data from SQL Server and placing in my grid view. Now my problem is, I'm using paging and placing 50 rows per page in Grid view. I would like to fetch top 50 rows from database in the start up and bind to the Grid View and when i click on next page, then again go to the database and fetch Second Top 50 rows and bind to GV. and this process hasto continue until last row is fetched from Database. Can you tell me How to write Query in achieving this??

    Read the article

  • Sending Data as Instances using Python Sockets

    - by Alice
    I'm working on the networking part of a 2 player game (similar to tetris), and I'm trying to pass the game grid from client to server and vice versa. However, when I tried using send(grid) I get a TypeError: send() argument 1 must be string or read-only buffer, not instance. Is there anyway to circumvent this, or do I have to convert my grid instance into a string and then interpret it from the other side? Thanks in advance!

    Read the article

  • Add effects to datagrid invalidate

    - by MooCow
    Is it possible to add an effect to a datagrid when I call invalidatelist to update the data? If it can be done, can the effects be selectively applied to only certain cells in the grid? The grid is showing an array with some nested array in it. I'm using an int counter to keep track of the nested array element position. When the counter is advanced, I tell the grid to update using invalidatelist.

    Read the article

  • DataSet binding problem

    - by Shaine
    I've got in-memory dataset with some table defined and I populate this table in a following way: for(...) ds.Fields.AddFieldsRow(++j, 0, heading, "Char", "", "", "Input", 0, "","",""); On the GUI I've got DataGridView bound to that table inside TabControl (bound through BindingSource). Very strange thing is happening: if I open tab pane with this grid and populate table with some data then I see changes in grid. On the other side if I'm at other tab, populate table, and then switch to tab with grid I've got following exception: "DataMember property 'Fields' cannot be found on the DataSource". In similar way I've got 2 tab panes with grid in each that are bound to the same datatable using different datasources and I open one of them, populate, see the changes, then switch to second tab and get crash. What am I missing?

    Read the article

  • xaml shapes - relative to canvas size

    - by taglius
    I have the need to draw shapes in XAML that are always relative to the container window/canvas size. For example, I need a window to show a 3x3 grid on it, where the grid always splits the window into 3 equal parts. Can I create lines that are bound to 1/3 the width of the grid? thank you

    Read the article

  • Randomised objects are assigning themselves to more than one array location

    - by Thaddeus Aid
    this.size = 9; this.populationSize = 10; Random rand = new Random(); Integer[][] easy1 = new Integer[size][size]; easy1 = this.initializeEasy1(easy1); this.sudokuArray = new Sudoku[this.populationSize]; for (int i = 0; i < this.sudokuArray.length; i++){ long seed = rand.nextLong(); System.out.println("" + seed); this.sudokuArray[i] = new Sudoku(easy1, this.size, seed); } I am building an evolutionary sudoku solver and I am having a problem where the last Sudoku object is overwriting all the other objects in the array. Where in the code did I mess up? /edit here is the constructor of the class public Sudoku(Integer[][] givensGrid, int s, long seed){ this.size = s; this.givens = givensGrid; this.grid = this.givens.clone(); Random rand = new Random(seed); System.out.println("Random " + rand.nextInt()); // step though each row of the grid for (int i = 0; i < size; i++){ ArrayList<Integer> numbers = new ArrayList<Integer>(); numbers = this.makeNumbers(numbers); // step through each column to find the givens and remove from numbers for (int j = 0; j < size; j++){ if (this.grid[i][j] != 0){ numbers.remove(this.grid[i][j]); } } // go back through the row and assign the numbers randomly for (int j = 0; j < size; j++){ if (this.grid[i][j] == 0){ int r = rand.nextInt(numbers.size()); this.grid[i][j] = numbers.get(r); numbers.remove(r); } } } System.out.println("============="); System.out.println(this.toString()); }

    Read the article

  • C++ Vector of vectors is messing with me

    - by xbonez
    If I put this code in a .cpp file and run it, it runs just fine: #include <iostream> #include <vector> #include <string> using namespace std; typedef vector<int> row; typedef vector<row> myMatrix; void main() { //cout << endl << "test" << endl; myMatrix mat(2,2); mat[0][1] = 2; cout << endl << mat[0][1] << endl; } But, if I make a .h and a .cpp file with the .h file like this, it gives me boatloads of errors. #ifndef _grid_ #define _grid_ #include<iostream> #include<vector> #include<string> using namespace std; typedef vector<int> row; typedef vector<row> myMatrix; class grid { public: grid(); ~grid(); int getElement(unsigned int ri, unsigned int ci); bool setElement(unsigned int ri, unsigned int ci, unsigned int value); private: myMatrix sudoku_(9,9); }; #endif These are some of the errors I get: warning C4091: 'typedef ' : ignored on left of 'int' when no variable is declared error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

    Read the article

  • Android - Retrieve all data from a SQLite table row

    - by Paul
    I have searched and cannot find an answer to my issue so i hope i am not completely barking up the wrong tree (so to speak). I am new to android and have started to create an app. My app on one screen creates and adds entries to a SQLite database using public class DatabaseHandler extends SQLiteOpenHelper and this all appears to work. I retrieve all the data and populate it into a grid, again this now works. My issue is I am unable to retrieve one complete line from the grid. I populate/display the grid with the following code. I have cut a lot out as the grid is made in stages, header, blank lines etc but the grid does display as I want. The id’s work as when I touch a line it displays its unique id. The onClick is right at the end and when I use getText() instead of getID() all it returns is the data in the labelDate. How do I retrieve all the labels as listed below? TextView labelDATE = new TextView(this); TextView labelCP = new TextView(this); TextView labelBG = new TextView(this); TextView labelQA = new TextView(this); TextView labelCN = new TextView(this); TextView labelKT = new TextView(this); TextView[] tvArray = {labelDATE, labelCP, labelBG, labelQA, labelCN, labelKT}; labelDATE.setText(re.getTime()); labelCP.setText(re.getCP()); labelBG.setText(re.getBG()); labelQA.setText(re.getQA()); labelCN.setText(re.getCN()); labelKT.setText(re.getKT()); for (TextView tv : tvArray) { tv.setTextColor(Color.WHITE); tv.setId(200+count); tr.setOnClickListener(this); tr.addView(tv); } //add this to the table row tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT)); public void onClick(View v) { if (v instanceof TableRow) { TableRow row = (TableRow) v; TextView child = (TextView) row.getChildAt(0); Toast toast = Toast.makeText(this, String.valueOf(child.getId()), Toast.LENGTH_SHORT); toast.show(); } } I can supply all the code for the grid creation if required. Thanks for any help.

    Read the article

  • Datagridview retains waitcursor when updated from thread

    - by Apeksha
    I have a DataGridView control in my Windows Forms Application. I am adding rows to the grid using a background thread. I change the form's cursor to Waitcursor when the process starts and back to Default when it ends. This works well for the form, but not for the grid. When the form's cursor is changed back to default, the grid's cursor does not change, although the cursor over the rest of the form does. Does this have anything to do with the fact that I am updating the grid from a background thread? (The cursor is being changed from the UI thread).

    Read the article

  • problem getting a form image background

    - by Deumber
    I'm creating a datagridview transparent //I got the parent background image Bitmap parentBackGround = new Bitmap(this.Parent.BackgroundImage); //Set the area i want to create equal to the size of my grid Rectangle rect = new Rectangle(this.Location.X, this.Location.Y, this.Width, this.Height); //And draw in the entire grid the area of the background image that is cover with my grid, making a "transparent" effect. graphics.DrawImage(parentBackGround.Clone(rect, PixelFormat.Format32bppRgb), gridBounds); When the backgroundimage of the grid's parent is show in an normal layout all work ok, but if the layout is stretch, center or any other, the transparency effent gone, have you any idea to fix it?

    Read the article

  • Rails: i would need to load a haml file in a class and render in the caller

    - by Totty
    I have this: app/modules/grid_module.rb app/modules/grid.html.haml then in my view: app/views/layouts/default.html.haml I want to make a new instance of the grid_module and render it content. Its content is into the grid.html.haml and this file can only use the instance vars set in the grid_module.rb is this possible to do? (the grid name is just an example, it must be more flexible, to load the html.haml file based on the .rb class) the grid_module must has access to models too* like this: User.find_by_id(4) thanks for help

    Read the article

  • Make qwidget in new window in PyQt4

    - by matt
    I'm trying to make a class that extends qwidget, that pops up a new window, I must be missing something fundamental, class NewQuery(QtGui.QWidget): def __init__(self, parent): QtGui.QMainWindow.__init__(self,parent) self.setWindowTitle('Add New Query') grid = QtGui.QGridLayout() label = QtGui.QLabel('blah') grid.addWidget(label,0,0) self.setLayout(grid) self.resize(300,200) when a new instance of this is made in main window's class, and show() called, the content is overlaid on the main window, how can I make it display in a new window?

    Read the article

  • Effective simulation of compound poisson process in Matlab

    - by Henrik
    I need to simulate a huge bunch of compound poisson processes in Matlab on a very fine grid so I am looking to do it most effectively. I need to do a lot of simulations on the same random numbers but with parameters changing so it is practical to draw the uniforms and normals beforehand even though it means i have to draw a lot more than i will probably need and won't matter much because it will only need to be done once compared to in the order 500*n repl times the actual compound process generation. My method is the following: Let T be for how long i need to simulate and N the grid points, then my grid is: t=linspace(1,T,N); Let nrepl be the number of processes i need then I simulate P=poissrnd(lambda,nrepl,1); % Number of jumps for each replication U=(T-1)*rand(10000,nrepl)+1; % Set of uniforms on (1,T) for jump times N=randn(10000,nrepl); % Set of normals for jump size Then for replication j: Poiss=P(j); % Jumps for replication Uni=U(1:Poiss,j);% Jump times Norm=mu+sigma*N(1:Poiss,j);% Jump sizes Then this I guess is where I need your advice, I use this one-liner but it seems very slow: CPP_norm=sum(bsxfun(@times,bsxfun(@gt,t,Uni),Norm),1); In the inner for each jump it creates a series of same length as t with 0 until jump and then 1 after, multiplying this will create a grid with zeroes until jump has arrived and then the jump size and finally adding all these will produce the entire jump process on the grid. How can this be done more effectively? Thank you very much.

    Read the article

  • Problems setting vertical scrollbar value in a datagrid (old one, not the better DataGridView).

    - by user365581
    I need to save the selected row and the vertical scrollBar's position after a refresh. This is how I do it: int currRow = myGrid.CurrentRowIndex; int vScrollPos = ((ScrollBar)myGrid.Controls[1]).Value // some code that refreshes the data among other things myGrid.CurrentRowIndex = currRow; // this sets the property myGrid.Select(currRow); // this selects in UI (both commands required) ((ScrollBar)myGrid.Controls[1]).Value = vScrollPos; Here's my problem: The grid always jumps to a place where the selected row is at the bottom. setting the current row makes it happen - similar to EnsureVisible of newer grid implementations. But after that there's the vScrollBar repositioning - and it just doesn't work right. In debug I see that the scroll bar value gets updated. In the UI, if I hit the down/up arrow on the scrollbar it suddenly jumps to the right place - But if I don't click anything the grid is just in the wrong position. I tried refreshing the grid/scroll bar to force a redraw, but it doesn't help. The actual grid position is just not in sync with the vertical ScrollBar's value. Any ideas?

    Read the article

  • ASP.NET MVC Paging/Sorting/Filtering a list using ModelMetadata

    - by rajbk
    This post looks at how to control paging, sorting and filtering when displaying a list of data by specifying attributes in your Model using the ASP.NET MVC framework and the excellent MVCContrib library. It also shows how to hide/show columns and control the formatting of data using attributes.  This uses the Northwind database. A sample project is attached at the end of this post. Let’s start by looking at a class called ProductViewModel. The properties in the class are decorated with attributes. The OrderBy attribute tells the system that the Model can be sorted using that property. The SearchFilter attribute tells the system that filtering is allowed on that property. Filtering type is set by the  FilterType enum which currently supports Equals and Contains. The ScaffoldColumn property specifies if a column is hidden or not The DisplayFormat specifies how the data is formatted. public class ProductViewModel { [OrderBy(IsDefault = true)] [ScaffoldColumn(false)] public int? ProductID { get; set; }   [SearchFilter(FilterType.Contains)] [OrderBy] [DisplayName("Product Name")] public string ProductName { get; set; }   [OrderBy] [DisplayName("Unit Price")] [DisplayFormat(DataFormatString = "{0:c}")] public System.Nullable<decimal> UnitPrice { get; set; }   [DisplayName("Category Name")] public string CategoryName { get; set; }   [SearchFilter] [ScaffoldColumn(false)] public int? CategoryID { get; set; }   [SearchFilter] [ScaffoldColumn(false)] public int? SupplierID { get; set; }   [OrderBy] public bool Discontinued { get; set; } } Before we explore the code further, lets look at the UI.  The UI has a section for filtering the data. The column headers with links are sortable. Paging is also supported with the help of a pager row. The pager is rendered using the MVCContrib Pager component. The data is displayed using a customized version of the MVCContrib Grid component. The customization was done in order for the Grid to be aware of the attributes mentioned above. Now, let’s look at what happens when we perform actions on this page. The diagram below shows the process: The form on the page has its method set to “GET” therefore we see all the parameters in the query string. The query string is shown in blue above. This query gets routed to an action called Index with parameters of type ProductViewModel and PageSortOptions. The parameters in the query string get mapped to the input parameters using model binding. The ProductView object created has the information needed to filter data while the PageAndSorting object is used for paging and sorting the data. The last block in the figure above shows how the filtered and paged list is created. We receive a product list from our product repository (which is of type IQueryable) and first filter it by calliing the AsFiltered extension method passing in the productFilters object and then call the AsPagination extension method passing in the pageSort object. The AsFiltered extension method looks at the type of the filter instance passed in. It skips properties in the instance that do not have the SearchFilter attribute. For properties that have the SearchFilter attribute, it adds filter expression trees to filter against the IQueryable data. The AsPagination extension method looks at the type of the IQueryable and ensures that the column being sorted on has the OrderBy attribute. If it does not find one, it looks for the default sort field [OrderBy(IsDefault = true)]. It is required that at least one attribute in your model has the [OrderBy(IsDefault = true)]. This because a person could be performing paging without specifying an order by column. As you may recall the LINQ Skip method now requires that you call an OrderBy method before it. Therefore we need a default order by column to perform paging. The extension method adds a order expressoin tree to the IQueryable and calls the MVCContrib AsPagination extension method to page the data. Implementation Notes Auto Postback The search filter region auto performs a get request anytime the dropdown selection is changed. This is implemented using the following jQuery snippet $(document).ready(function () { $("#productSearch").change(function () { this.submit(); }); }); Strongly Typed View The code used in the Action method is shown below: public ActionResult Index(ProductViewModel productFilters, PageSortOptions pageSortOptions) { var productPagedList = productRepository.GetProductsProjected().AsFiltered(productFilters).AsPagination(pageSortOptions);   var productViewFilterContainer = new ProductViewFilterContainer(); productViewFilterContainer.Fill(productFilters.CategoryID, productFilters.SupplierID, productFilters.ProductName);   var gridSortOptions = new GridSortOptions { Column = pageSortOptions.Column, Direction = pageSortOptions.Direction };   var productListContainer = new ProductListContainerModel { ProductPagedList = productPagedList, ProductViewFilterContainer = productViewFilterContainer, GridSortOptions = gridSortOptions };   return View(productListContainer); } As you see above, the object that is returned to the view is of type ProductListContainerModel. This contains all the information need for the view to render the Search filter section (including dropdowns),  the Html.Pager (MVCContrib) and the Html.Grid (from MVCContrib). It also stores the state of the search filters so that they can recreate themselves when the page reloads (Viewstate, I miss you! :0)  The class diagram for the container class is shown below.   Custom MVCContrib Grid The MVCContrib grid default behavior was overridden so that it would auto generate the columns and format the columns based on the metadata and also make it aware of our custom attributes (see MetaDataGridModel in the sample code). The Grid ensures that the ShowForDisplay on the column is set to true This can also be set by the ScaffoldColumn attribute ref: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-2-modelmetadata.html) Column headers are set using the DisplayName attribute Column sorting is set using the OrderBy attribute. The data is formatted using the DisplayFormat attribute. Generic Extension methods for Sorting and Filtering The extension method AsFiltered takes in an IQueryable<T> and uses expression trees to query against the IQueryable data. The query is constructed using the Model metadata and the properties of the T filter (productFilters in our case). Properties in the Model that do not have the SearchFilter attribute are skipped when creating the filter expression tree.  It returns an IQueryable<T>. The extension method AsPagination takes in an IQuerable<T> and first ensures that the column being sorted on has the OrderBy attribute. If not, we look for the default OrderBy column ([OrderBy(IsDefault = true)]). We then build an expression tree to sort on this column. We finally hand off the call to the MVCContrib AsPagination which returns an IPagination<T>. This type as you can see in the class diagram above is passed to the view and used by the MVCContrib Grid and Pager components. Custom Provider To get the system to recognize our custom attributes, we create our MetadataProvider as mentioned in this article (http://bradwilson.typepad.com/blog/2010/01/why-you-dont-need-modelmetadataattributes.html) protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName) { ModelMetadata metadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);   SearchFilterAttribute searchFilterAttribute = attributes.OfType<SearchFilterAttribute>().FirstOrDefault(); if (searchFilterAttribute != null) { metadata.AdditionalValues.Add(Globals.SearchFilterAttributeKey, searchFilterAttribute); }   OrderByAttribute orderByAttribute = attributes.OfType<OrderByAttribute>().FirstOrDefault(); if (orderByAttribute != null) { metadata.AdditionalValues.Add(Globals.OrderByAttributeKey, orderByAttribute); }   return metadata; } We register our MetadataProvider in Global.asax.cs. protected void Application_Start() { AreaRegistration.RegisterAllAreas();   RegisterRoutes(RouteTable.Routes);   ModelMetadataProviders.Current = new MvcFlan.QueryModelMetaDataProvider(); } Bugs, Comments and Suggestions are welcome! You can download the sample code below. This code is purely experimental. Use at your own risk. Download Sample Code (VS 2010 RTM) MVCNorthwindSales.zip

    Read the article

< Previous Page | 51 52 53 54 55 56 57 58 59 60 61 62  | Next Page >