Forms Data Controls :: ListView Templates And Showing Association Fields Rather Than An Id
Feb 17, 2011
I have a Listview that is connected to an EntityDataSource. What I'm having trouble doing is showing fields of an association in the Item Template rather than just the id.
For example, what it currently shows:
Name: John Doe
What I wish it would show
Name: John Doe
Some example code:
Obviously, I'm getting the number because Race_ID is an integer. What I'm less sure about is how to bind it or Eval it in some manner that will let me match that id to a name in the other table (which is associated). I've tried <%# Eval("Race.Name") %>' and a few other things to try to get a name rather than an ID but I always get either the id or nothing at all.
I need to display the data using listView. I want the data to be displayed like this:
Student Name: John
Exam Grade MidTerm1 A MidTerm2 B
I want each item to looke like that. For this, I created a 'Student' class which has the Name and Exams(A list of Exam class objects) Properties. And the Exam class has ExamName and Grade properties. how I should specify the ItemTemplate and LayoutTemplate for the ListView??
All the writeups on ListView's EmptyDataTemplate say that it's for displaying the fact that no data records exist, which is logical; but the bad thing is that I've found nothing as a follow-up. In other words, I haven't been able to find any "now what?" once you (as the site user) find that there aren't any data records. I am led to then ask what the real purpose of the EmptyDataTemplate is if you can't do anything with it.
I added a button called "Add Your Photo" on the EmptyDataTemplate, which activates a ModalPopupExtender with an AsyncFileUpload. All this works fine in terms of uploading the file but nothing happens after that. I wonder if I should be starting instead in the InsertItemTemplate.
So, I need to know how to accomplish a couple of options: I need to start out in either the InsertItemTemplate or the EmptyDataTemplate. If I do the latter, I will need to know how to get from there to the ItemTemplate so the rendering can be displayed.
What code should I use to display the data--that is, how do I move from the EmptyDataTemplate to the ItemTemplate?
This is probably a dumb question, but I have to ask because I spend so much time editing my formviews and listviews. Is there a way to edit the default template setup for these controls, in the code or somewhere? When you drag them over you get the default text with textbox column names; then I spend over 30 mins editing each to look the way I want it to.
I know I can create standard templates for WebForms and save them as Exported Templates.
And is it possible to edit the default control when you drag them on to the page, to list certain attributes automatically. example (validation controls you always have to add ControltoValidate I would like to drag mine onto the page and it say controltovalidate="" and then all I do is fill in the blank. Intellisense is fine, but sometimes you get brain freeze after hours of web design and forget the needed attribute and you have all to go through all of the errors and mistakes.
The ultimate would be, to drag a FormView Control and when you Refresh the Schema, you get textboxes, label controls instead of text for column name, and divs for forms, and Image Buttons , I am sure there is an XML file that runs the code that you can edit or something.
ASP Developers, When you develop the next ServicePack allow us to edit or create default templates to customize the default templates, in VS and VWD.
i am using two tables for salary components like bonus,hra,ta,da.one is salary lookup table for viewing which components are chosen and according to this salary table is created dynamically.i want to view data fields of salary table in gridview and update thier value.
now problem is that how to create template field and edit template field for updating fields of salary table because field of the salary table changing every time as it is creating dynamically.
I have a listview set up in "flow" mode where the existing records are all on an extended page so you can scroll down to any record.
The InsertItem Template is in the first position, making it easy to insert a new record.
And one can scroll down the page to any record, click the edit button and update that record -- nice having everything on one scrollable page.
I am running into a problem with validations. I have validation controls restricting inputs for all the textboxes on the Insert Item template. They work fine. And on Item Inserted I am running a page validation:
Page.Validate() If Not Page.IsValid Then e.Cancel = True End If
which works fine also.
The problem occurs when I scroll down to an existing record, and go to edit it. I have all the same validation constraints on the textboxes for the EditItemTemplate as I have on the InsertItemTemplate. But I cannot successfully do a page validation on updating the record. The code I am using on update is:
Protected Sub LVRentals_ItemUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewUpdateEventArgs) Handles LVRentals.ItemUpdating Page.Validate() If Not Page.IsValid Then e.Cancel = True End If End Sub
This results in a Cancel even if there are no validation errors on the InsertItemTemplate because the Page.Validate() seems to be causing the InsertItemTemplate to think its fields should be filled out also.
Here is the code for a typical entry of the InsertItem Template:
All the controls in the Edit Item template are part of ValidationGroup "edit1" and those of the InsertItem Template are part of ValidationGroup "edit2"
How can I get around receiving validation errors on the InsertItem Template when I am trying to validate just the EditItemTemplate when both are present on the page?
I want to make a website which showing thumbnail images be taken from local folder,say,'thumbnails' inside the root folder like listview items.Below each thumbnails,the name of the file would be displayed with check boxes for selecting any thumbnail images.Clicking on any thumbnails will redirect to another page where the thumbnails and the original image(with the same name in some other local folder say 'Original') would be displayed.
I have a listview control bound to an SqlDataSource. As part of the formatting I want to add a title to the data returned from my database. For instance if the data base returns a phone number I want to add 'Tel.' first. However I do not want to diplay this title if the datafield is empty. Here is what I have done so far.
Ii've made a Listview showing photos from database as thumbnails in a "kind of a film strip", including a pager.What i need is that when i click on a thumbnail inside the ListView, to show the large photo in a image control outside the listview. this should work using the selectedIndexChanged event,
I have a listview that shows the user the details of the members who have sent friendship request. The table from which the data come has two fields namely, sender_id[id of the one who sends friendship request] and receiver_id[id of the one to whom the request is sent].
There will be two columns in the listview. The first would show the pic and the name of the user. The problem is that how am I going to show the pic and the name if the table from where the data come does not contain these info. I know that the sender_id can be used to fetch the pic and name of the sender, but how should it be done?
Earlier I would do something like <%#Eval("fieldName")%>. But in the above described scenario the field is not present in the current table but the other one.
I have 2 textboxes that I am using for StartDate and EndDate in DateTime format, I am using DetailsView with Insert and Edit Templates, I was provided this code by "compguy2100", in order to make sure that the EndDate comes after the StartDate by at least 1 Minute. What I can't figure out is how to get the code to find the textboxes in question so it can validate them. I've used Detailsview.findcontrol with other controls however they are used with Item updating or inserting. I need this to run once the user has either entered a Date and Time and tabbed to a different dataentry cell. I've tried to use this code in the TextChanged event with no luck.
Dim StartDate As Date Dim EndDate As Date Dim Difference As TimeSpan StartDate = CDate(txtStartDate.Text.ToString()) EndDate = CDate(txtEndDate.Text.ToString()) Difference = EndDate.Subtract(StartDate) If Not Difference.Seconds >= 1 Then lblDifference.Text = "Please make sure the end date is greater than the start date" Return End If
I added a RequiredFieldValidator to my InsertItemTemplate, and it seems to be working fine. The problem I am having, however, is that now I cannot do anything else in the ListView (like edit or delete items) UNLESS the required field has a value. Is there some way I can manually do the validation when the user clicks the 'Insert' button on the InsertItemTemplate, or some other little trick I can perform so the user doesn't have to first type in a value just to delete something else in the list?
is it possible to have a button defined outside a grid view and give it a command name of "select" and somehow attach it to the gridview, so the grid recieves a select command when clicked without writing code?
I have a listview that is showing its result by using a linq query. The linq query goes like this.
* db.Varer: Varer is a table that contains basic product information like proudct name, product nr. etc. ** a.fk_kategori_id == CatParamId : I'm just saying limit the result according to the Category ID (a.fk_kategori_id). The category id is coming from a dropdownlist (CatParamID) *** Join: Besides the Varer (Product) table I also have another table, Sizes. This Sizes table contains 6 columns (ID_Sizes (int) primary key and the columns: OneSize, S, M, L, XL, XXL all are bit (true or false)). There is a relationship between Varer table and Sizes table. It says that I can only insert a value into the "fk_sizes_id - column" of varer table if that value already exists as primary key within the Sizes table. **** I'm starting by picking basic product values like productId, ProductName etc from the Varer (a) table ***** Then I'm picking the corresponding Sizes values (onesize, s, m, ...) from the Sizes table. Now within my ListView I'm showing the above result by using Eval, like this.
And this works perfectly, but now comes the thing that is causing me trouble. I have the below drop down list (still within the ListView ItemTemplate):
I want this drop down list to be populated with only those of the "linq query's Sizes table result" that are true. By "Sizes table result" I mean these
I have a GridView, and I want Column1 to be equal to datatable data (filled by a SqlDataAdapter). Then I have two other fields by the SqlDataAdapter (first name, last name), and I want to have those two fields combined to form Column2. I have a TemplateField for my GridView that combines the first name and last name with Eval()'s, but the GridView places this combined field TemplateField and puts it as the first column.
How can I do this so that TemplateField can go in between fields that are databound?
I,am trying to create a self association relation for an organization chart data tree in Entity Framework,after trying different ways for prevention of exceptions like 3007 and etc. I found that when I put my foreign key in my POCO near Parent and Items navigation properties its work.but I think this is not correct that we have both ParentID scalar property and Parent navigation property. review this and tell me is it correct or not.I'm using VS 2010 RC and ofcource .net framework 4.0 RC
I am using entity framework. My model has entity tblGameInfo where in navigation properties are associations called tblPlayer1 and tblPlayer2 which links to entity tblPlayer. I have listview on my page where I want to show game info with players names. I have found that in of listview I should have e.g. one of those:
But it does not work. I got nothing displayed in a listview. I have tried many different options but cannot find working one. Probably is some simple mistake but I am new to asp.net and cannot find it. Second problem with this is editing. In edit template there is dropdownlist with all players.
How do I databind it? It is not allowed to bind and change properties? It writes me that element does not exist on a list of elements.
Background: I'm populating lots of asp.net c# GridViews and ListViews from a database and subsequently users may export them to Excel. I want export as native Excel (not html). I can't use office automation, and I'm using JET which works fine. I have no control over users' machines. Question: When doing the export, you have to tell Jet what type each field is, in my case "text" (varchar) or "numeric" (double). The difference is that if you export a numeric column, the users can sum the data in Excel, where as strings are exported with a leading apostrophe and so are not much use in arithmetic.
Currently I parse the first data row of the Grid/ListView, check if each value is numeric or text, and assign a type to the column accordingly. That works, except for when I have something in the first column which looks numeric but in fact is a text string. I don't want to parse every row in order to be sure I have the correct data type as some of these exports are quite large. When I load the Grid/ListView from the database, the database certainly knows what type each field is. So my question is... how do I extract the type of the database item behind a a Grid/ListView item? I could explicitly code it as an attribute on the item, but that's duplicating information I already have, if only I can get to it. I know that where I have a DataTable then I can get the underlying type from that, but mostly I don't have tables handy, just the Grid/ListView. Note that Jet will throw if you try to insert an empty string into a nullable numeric column. The way to do this is to omit that column name from the insert statement, or output a zero.
I am simply trying to change the listView template based on a value in the listview data. I do have this displaying the information correctly. Except when I try to change the item template based on a value in the listview. My code is below ....