MVC :: Master Detail (in The Same View)?
Aug 10, 2010Master Detail (in the same view)
View 3 RepliesMaster Detail (in the same view)
View 3 Repliesarticle on binding to a list and I've got that working fine on one view. But what I'm stuck when doing it off a master record. Everything seems to work except that when I look in the database the detail records previous associated with the current master have their Foriegn key to master set to Null and a new set of detail records have been inserted. I've got a really simple form for this object
[Code]....
The form collection comes back with the expected prefixes:
[Code]....
And the Controller.UpdateModel(master) binds all the properties correctly. But when I call dbContext.SaveChanges it issues the follow sql from sql profiler (psuedo code)
[Code]....
I've got a work around that works but it's pretty hackish and I'm currently not matching up the keys so it's dependent on everything coming back in the right order. Plus I've got to include all the fields that I want updated.
[Code]....
I thought that entity framework's code first was the culprite but I've unit test that and it works fine. I've got a feeling that UpdateModel is somehow removing and re-adding the children. Has anyone else got this to work? Of course, I could throw in the towel and parse the indexed field names myself, but I'm so close!
Members view (index) that lists members that users can select to show a partial view in the same view with details for the selected memberUses jquery (Ajax.ActionLink) to call a partial view method in the members controller to then load the members detail sectionWorks fine up to here....but I'd like to load the partial view with "member" details for a default or random member on initial load -- ie not through the Actionlink selectionHow do I invoke the partial view method on the initial load?
View 4 RepliesI have an "Edit" page that uses a FormView bound to an EntityDataSource. The page is called with the ID field of the record to edit in the query string: "EditEmployee.aspx?ID=10". The EDS the FormView is bound to is using: AutoGenerateWhereClause=true and a QueryStringParameter. Below the FormView I have a ListView that contains some child records of the FormView. The ListView is bound to a seperate EDS and also uses the (same) QueryStringParameter.
The problem I am having is when this ListView attempts to Insert or Edt a column I receive an error because I don't have the ID field (EmployeeID) of the parent bound anywhere in the ListView (and obviously, it is setup as a ForeignKey so it fails, like it should). Any advice on the best way to get this ID (EmployeeID) column bound in the ListView? There are many things I can do in code behind, but I would like to solve this in the markup if possible. I can move the ListView so that it is inside of the FormView if necessary.
When I send a strongly typed ViewModel containing other ViewModels nested inside (basically spanning 3 tables into one object) all the data is correctly presented when debugging. However it complains at rendering time with an exception "Compiler Error Message: CS1061: 'object' does not contain a definition for 'Name' and no extension method 'Name' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)"
and the error is thrown from mvc2-rtm-sourcessrcSystemWebMvcMvcViewPageControlBuilder.cs method:
ProcessGeneratedCode line 19
PageBaseType is null all the time
[Code]....
ViewModels
[Code]....
Database
3 tables make up for the ProjectModelView object
users
projects
project_bids
Im making a Master details web page ASP.NET. I have one aspx page with all the items in a listview, then a link to another page to show the details view, but I dont want to use a asp:detailsview control becasue it generates a table, and I want a more complex layout. I want work each property of the item, but I dont know how. I want to do in LINQ. This is my very bad aprox: I need an orientation of how to get ONLY one item from the LinqDataSource on the page load and not to query the database everytime I need a column. I dont need biding because I only need to show data, not insert, not update, not delete...
View 2 RepliesI'm trying to setup is a News module with article listing paging and article detail paging. I have a GridView with paging that lists my articles just fine. In that list, some article titles have links that direct to an article detail page by passing in the articleID to the details page. I was able to setup my details page, which uses a DetailsView control, to use paging by using an ObjectDataSource with pageIndex and pageSize parameters from the querystring. Once on my detail page, I can use my navigation arrows to move through Next and Previous articles just fine.
No matter which article I click in my article list, my detail page always starts with pageIndex 0 and thus not the article I clicked on. I understand why that is because it's going by pageIndex value instead of articleID. What I need it to do is, set the detail to whatever articleID i pass in, then allow me to navigate Next and Previous to THAT particular article instead of starting me off from pageIndex 0.
[Code]....
I've been experimenting with using EF (asp.net 3.5 sp1) with a master detail page. Using northwind as the database, I'm simply trying to have categories as master and products as detail. I have read everything I could find on the net about the where condition and it still fails with this error as soon as I click the select link in the master grid:
Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: A property with name 'CategoryID' does not exist in metadata for entity type 'WebAppEF01.Products'.
What strikes me is that the CategoryID column is not exposed by the EF model. That's been rolled up into the navigation element 'Categories' I suppose...but on the surface this seems to create the problem I've running in to. I've tried turning off the autogeneratewhere clause but didn't have success. The code for this page follows below.
[Code]....
I have a Page with a FileUpload control on the top with the "Insert" button, in order to insert pictures Below that, i have a Listview showing all the pics. THis is the way i am placing my Update Panel:
[Code]....
How can i, press the INSERT button and reloads only the Content Template after INSERTING?
I have the basic Master / Detail Views working great with the default ASP.NET MVC Route; however I would like to build some URLs like this: /Class/Details/5 -- General Detail view [Working] What I'm not sure about (and I'm not tied to this URL format, just something roughly equalivent.)
/Class/5/Details/Logs -- Detail View with Logs
/Class/5/Details/Status -- Detail View with current Status
Another way to put this, is like this: /{controller}/{id}/{controllerSpecificMaster}/{action}/ What I'm trying to avoid, is cluttering up my ViewsClass directory with a bunch of Views, which are all basically derivatives of the Details view. I'm on ASP.NET MVC 1 and .NET 3.5 SP1.
I have an accordion AJax Toolkit control which at header level displays a list of categories from datatable1 (a distinct list of categories) , and in the content section I want to display the details (possibly in a grid) from datatable2 (a list of all products and detail including category).
There are plenty of tutorials on how to achieve this. However the tricky part is that I don't want to re-query the database on opening each header. I would rather the data is pre-filled for each detail section based on the category and just gets displayed.
I am currently designing a master detail gridview. I have two separate objects defined for them. The parent gridview is binded to the first object and in row databind event I bind the second gridview with the detail object using parent ID.A lot of examples I see on the internet initialize the details object inside the parent class,
public class Author
{
private string name;[code]...
What is the purpose of initializing child class inside the parent class? Currently, I just bind the parent to a separate object & child to a separate object manually in my presentation layer & never initialize child objects inside parent class. Is that the wrong way for OOP ? What is the recommended way to achieve this task for my gridview?
I am trying to build a master detail functionality. It present, there is a web page i.e. page1.aspx with search functionality. When the criteria is entered then the search button can be clicked and then the GridView gets populated with data. In this GridView, a number of the fields of the selected row can be edited as per business requirement. Now I would like the user to be able to see and edit more fields related to the selected row in the gridview. These are extra fields which are not viewable in the gridview. Question: Is it best to have another page i.e. page2.aspx to see and edit these extra fields or is it better to have these extra fields (One in each control) just below the gridview in page1.aspx?
View 8 RepliesI have a master - detail query that I'm trying to run and I've run into a road block... I have a table with 'County' as one of the fields. I'd like to display the county name in the drop down list, and then display the details of that record in a 'details view/grid' below the drop down list. Here is what I have so far:
[Code]....
I'm getting the error: Compilation Error Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. Compiler Error Message: CS1061: 'ASP.default_aspx' does not contain a definition for 'DropDownList1_SelectedIndexChanged' and no extension ethod 'DropDownList1_SelectedIndexChanged' accepting a first argument of type 'ASP.default_aspx' could be found (are you missing a using directive or an assembly reference?)Source Error:
[Code]....
i wanna wrtite a model for master - detail tables. using mvc and entity framework.
for example maste table is ORders, detail table is ORderDetails.
ORders colunms (OrderID, Date, Employe..)
ORders
OrderID Date ....
1 1/1/10
2 1/2/10
OrderDetail columns (OrderID, porductID, Amount)
ORderID ProductID Amount
1 1 10
1 2 8
1 3 7
i am creating a model for this structure
Puclis class Model{
public OrderID, Date, Employe;
List<OrderDetail> list ; // this is another class OrderDetails...
}
while saving this model to database orderID,Data,Employe... items are saving Orders table in database. and List<OrderDetail> is saving with for loop to ORderDetail table.
but editing the order and details model is difficult.
I was looking tutorial for Master/Detail and I have one question. If I populate DropDowList with some data from database and run application, DropDownList show the first record from database. And if I choose some Item from DropDownList DataList show result of filtering. How when I run application to populate DataList as Detail using parametar of first Item in DropDownList populated from database?
View 5 RepliesI 'm writing a gridview. When you click a image button in the gridview, it will popup a panel to show detail. But it is not working at the moment.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="test67.aspx.vb" Inherits="test67" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="css/style_ie.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers">
</asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="CustomerID" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="CompanyName" HeaderText="CompanyName"
SortExpression="CompanyName" />
<asp:BoundField DataField="ContactName" HeaderText="ContactName"
SortExpression="ContactName" />
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:ImageButton ID="ImageButton1" runat="server" CausesValidation="False" CommandName="Select"
ImageUrl="Images/details_icon.gif" ToolTip="Show Details"/>
<asp:Panel ID="Panel1" runat="server" BackColor="#FFFFFF">
<asp:UpdatePanel ID="UpdatePanel2" runat="server" >
<ContentTemplate>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" SelectCommand="SELECT customerid,CompanyName, ContactName, ContactTitle, Address from Customers WHERE CustomerID = @CustomerID"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" UpdateCommand="UPDATE customers SET CompanyName=@CompanyName ,ContactName=@ContactName ,ContactTitle=@ContactTitle ,Address=@Address where CustomerID=@CustomerID">
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" Name="CustomerID" PropertyName="SelectedValue"
Type="String" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="CompanyName" Type="String" />
<asp:Parameter Name="ContactName" Type="String" />
<asp:Parameter Name="ContactTitle" Type="String" />
<asp:Parameter Name="Address" Type="String" />
<asp:Parameter Name="CustomerID" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:DetailsView ID="DetailsView1" runat="server" DataKeyNames="CustomerID" ForeColor="#000000"
DataSourceID="SqlDataSource2" HeaderText="Details" AutoGenerateEditButton="True"
AutoGenerateRows="False" BorderColor="Gray"
BorderStyle="Solid" BorderWidth="1px">
<FooterStyle CssClass="orderhistorydetail2_table_head0" ForeColor="White" Font-Bold="True"></FooterStyle>
<CommandRowStyle BackColor="#dfe4ec" ForeColor="#003975" HorizontalAlign="Left" Font-Bold="True"></CommandRowStyle>
<EditRowStyle BorderStyle="None"></EditRowStyle>
<RowStyle BackColor="#FFFFFF"></RowStyle>
<PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center"></PagerStyle>
<Fields>
<asp:BoundField DataField="CompanyName" HeaderText="CompanyName" SortExpression="CompanyName" />
<asp:BoundField DataField="ContactName" HeaderText="ContactName" SortExpression="ContactName" />
<asp:BoundField DataField="ContactTitle" HeaderText="ContactTitle" SortExpression="ContactTitle" />
<asp:BoundField DataField="Address" HeaderText="Address" SortExpression="Address" />
</Fields>
<RowStyle Font-Names="Verdana" Font-Size="10px" ForeColor="#000000" Height="25px" />
<HeaderStyle CssClass="orderhistorydetail2_table_head0" ForeColor="#003975" Height="25px" />
<AlternatingRowStyle BackColor="#EEF1F5" />
</asp:DetailsView>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
<cc1:PopupControlExtender ID="PopupControlExtender1" runat="server" TargetControlID="ImageButton1"
PopupControlID="panel1"
Position="Right"
OffsetX="0"
OffsetY="0"
>
</cc1:PopupControlExtender>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
I am building treeview using asp.net 2.0/3.5 from master detail table.
ParentTable Value ---ChildTable Value ---GrandChildTable1 Node ---GrandChildTable1 Value ---GrandChildTable2 Node ---GrandChildTable1 Value
I have created something like this to populate node values. But I am not sure how to display GrandChildNode and values.
[Code]....
I have a single web page with master detail form/input layout. Currently the form works in a way like
User opens the page containing both master/detail data entry controls and enters the master information (The details save button is disabled)When he saves the master information, the save master button gets disabled and save details is enabled User continues to enter multiple details which get populated in a gridview at the bottom of page All works well Problem is that, the master part contains a lot of data entry controls (drop down lists gridviews etc)
How do I facilitate the user much more then the current layout? Should he be redirected to a new page after he enters the master record ? How can I improve on this?
I have a current scenario where I have a master detail report for a single certain record in table in format
Record 1
detail 1
detail 2
detail n
Currently I have 2 details section with Record data in 1 section and a subreport in other section (details)
Now I want to have report for all records in table like
Record 1
detail 1
detail 2
detail n
Record 2
detail 1
detail 2
detail n
and so on.
How do I structure my report to have master details for all the records in the table ?
I am new in crystal reports. I want to show main detail relationship in crystal reports like this
Main Records
CustomerID CustomerName ContactNo City
1 Shaiwal 7388898### Varanasi
Detail Records
CustomerID OrderID Quantity UnitPrice
1 1 50 500
1 2 30 1000
1 3 60 700
1 4 80 5000
There is button Update in detail veiw which automatically transform the column to textbox can any body tell me where to code the update code;in .aspx or in .aspxcs
View 1 RepliesI find my own way redundant to perform an insert command in a master-detail transaction. Sample, is a Purchase Order, before inserting the details/items will need to find the master key otherwise were not able to make the details connection. Normally we send command to button object which will submit the whole page rather than part of it and these means were not able to capture beforehand the master key to refer in the details.
So, Im thinking of how you do efficiently a master/detail batch update like we normally do in windows apps.
I am using a GridView and a DetailsView to establish a master to detail form, the idea is to let user select a record on Gridview and Detailsview will load selected record for editing. Here is declaration for the ODS and Detailsview.
[Code]....
this is working fine when I select a record from GridView and edit/update it in DetailsView. But it's not working so well when I insert a new record using DetailsView, because after insertion the selected record remains as the record selected in GridView.
So here is the situation - there is data on master records - its a hierarhical view - something like (ID, IDParent, Title) and detail data - (ID, IDMaster, Details)
And like to build UI using an TreeView - binded with master data - and an GridView - binded with detail data.
Question is witch property to use to create the master/detail chain between Datasources - oh, I've forgot to tell I'm using an ObjectDataSource?