Forms Data Controls :: How To Map Form Fields With Strongly Typed Data Sets
Feb 26, 2010
just starting strongly typed data sets, I have managed to fill my data set and bind the gridview, but now I dont understand where to map the fields ? Inside the business logic layer or presentation layer.
working example to map fields with a select query and with an update .
Okay, here's something that I could easily do the hard way and manually wire up each form element and save it to a datatable in memory, but there has to be a more efficient way to do it.
Here's what I have:
1. A strongly typed datatable and tableadapter in a XSD name Orders
2. A formview control which currently is connected to an ODS connected to the Orders tableadapter, this makes it easy to wire up the databindings for each form field in design view
I would like to:
- bind the the formview to an instance of the strongly typed datatable, and then save the dt to a session object without interacting with the actual database
- load forms on subsequent pages from the dt in session
- ultimately save the dt info to an actual database table on the third page
I've read some solutions where a custom class is created, but to me this seems like almost as much work as wiring up the form field to the table columns manually in code.
public class MyViewModel { public MyObject myObject{ get; set; } public List<MyList> myList{ get; set; } }
I have a view with a form strongly typed to MyViewModel This view allows you to enter values for the properties of MyObject, as well as create a list of MyList objects. The List part works fine although I thought that would be the more difficult of the two. Assuming MyObject has a property Description I create a textbox to enter the value as such:
@Html.EditorFor(x => x.myObject.Description); The text box renders with an id of MyObject_Description...The problem is when I post this to my controller action, MyObject does not get bound at all(althought the list items do as they recieve the appropriate IDs of "MyViewModel_MyList[guid].myListValue") What am I doing wrong here?? EDIT: more info The first line of the view is: @model MyApp.ViewModels.MyViewModel And the Action method: [HttpPost] public ActionResult Create(MyViewModel myViewModel) { } I am passing a new MyViewModel into the partial view to begin... public ActionResult Create() { MyViewModel model = new MyViewModel(); return PartialView(model); } EDIT 2 Ok When I render my partial view that contains the forms I call : @{Html.RenderAction("Create", "MyController");} this is called from within a View of type @model IEnumerable<MyApp.Models.MyObject> (this view displays a list of currently existing MyOjects, and at the bottom the partial is rendered to allow the user to add another MyObject to the DB)
In my Index() function, I have a query which is joining multiple tables. How do I transform this query into the object model which I am going to use in my view?
I am facing few issues. I am using MVC2.I am developing a form which is being created dynamically based on its layout and all html attributes info stored in DB table. This dynamically generated form stores data(this table have all html field names as columns) in another db table(db is mysql).
I have created ViewModel class in which i get both design table entity objects and data table entity object. I, then, created strongly typed view based on that ViewModel. But the problem is when i rendering html fields using html helpers i.e
TextBox(Model.tblDesign.htmlField_name).it doesnt bind with the columns of Model.tblData whose names are same as of Model.tblDesign.htmlField_name. how can i bind fields of data table?
I personally dont like doing this as i find it makes it harder for me to know if someone changed the field name, or mis typed it during development - the other way you won't know until the page loads.
With the strongly typed version if something changes in your DAL etc the build will break - letting me know I've messed up.
Why do so many people appear to use weakly typed code in ASP.Net (in examples, MVC, etc)? Am i missing something?
Given the benefits of using strongly typed views to eliminate typed errors and the use of lambda expressions why would one use a dynamically typed view? When I use them I don't feel as safe as with strongly typed views. Am I missing something? Is there a special use for them?
I have a form where the user enters their first name, last name, email address etc.. and then they also have the ability to enter 'cottages' that they are interested in viewing (ie. The cottage name, cottage address). The user then needs to be able to 'save' this somewhere and enter another cottage into the same form.
Finally the user will submit the form, and all the user details, and cottage details will be emailed to admin.
When I am creating Strongly Typed View I get lots of Classes in View Data Drop down. Classes like Automapper, ninject, Interface..., latebound... Due this its very hard to find my project classes. Is there any way to restrict dropdown to only display my project classes?
I am populating data into formfields when i select checkbox in a grid view with the following code.I have 20 record set in database,Quotenumber(Main column) starts 3001 ,3002,3003..........3020.I am allowing duplicate entries meant that i have 4 recordset only on 3000 quotenumber like wise i may have 3or more record set on 3010,problem here is when i select first one of 3000(Quotenumber) it is supposed to populate the record set of first one of 3000 but only last one of 3000(quotenumber) is getting populated into form field.Can any one provide solution to this.
Code for Populating Data into formfield when you select checkbox ina grid view.
Dim indx As Integer Dim connectionString As String = "Database=xxxx;" & "Data Source=localhost;" & "User Id=root;Password=xxxx" Dim query As String = "SELECT QuoteNumber,Revision,Vendor,PartNumber FROM quotes order by QuoteNumber" Dim connection As New MySqlConnection(connectionString) Dim da As New MySqlDataAdapter(query, connection) Dim ds As New DataSet() Dim myAdapter As New MySqlDataAdapter myAdapter = New MySqlDataAdapter(query, connection) myAdapter.Fill(ds, "QUOTES") Dim dt As DataTable = New DataTable() 'DataTable Initializes a new instance of the DataTable class with no arguments. da.Fill(dt) Dim checkbox As CheckBox = CType(sender, CheckBox) checkbox.Checked = True Dim row As GridViewRow = CType(checkbox.NamingContainer, GridViewRow) Dim i As Integer For i = 0 To dt.Rows.Count - 1 Step i + 1 If (dt.Rows(i)("QuoteNumber").ToString = row.Cells(1).Text.ToString()) Then indx = i End If Next DDQuote.Text = dt.Rows(indx)("QuoteNumber").ToString() txtRev.Text = dt.Rows(indx)("Revision").ToString() DDVend.Text = dt.Rows(indx)("Vendor").ToString() txtPart.Text = dt.Rows(indx)("PartNumber").ToString()
I have a form and its code as above there are many columns and I want to do one thing that when user enter all the values in the form and upon pressing submit button all the data were show on the form..
E.g. here is the structure. I have the following fields in my form
Start Date................
End Date.................
Promo Type................
Service..........................
Submit Button
When I press submit button all of the data which i enter above was shown below.
Any method for this I don't want to use grid over here...
I have a gridview that pops up when you click a link. It displays 5 columns.. if you click on the "select" link next to the record, i pass that rows values back to my form and submit the form again.. this works fine if i select a record that has all my form field values..
but if i pick a record that has some values that are empty it doesnt work.. after debugging im finding that for the fields that are blank on the screen, this is the value being passed " " which of course is not empty or null.. so my code doesnt know how to handle that.. i even tried to add .Trim() to the end of the gridview value and still getting that space being passed. How can i pass empty string instead of the for fields that dont have anything to pass?
This is my code i have for the SelectedIndexChanging event of the gridview
I would rather not magic string my DataTextField/Values on the dropdownlist after setting up the source as a List collection of objects.
I was thinking I could use the DataSource properties but it doesn't seem to like the couple of ways I tried.
WORKS BUT NOT IDEAL //set the datasource to the returned List<Cart> this.cartDdl.DataSource = CartManager.Load(WebProfile.Current.UserName); //set the DataValueField to the Cart.ID property this.cartDdl.DataValueField = "ID";//would rather use the obj property Cart.ID //set the DataTextField to the Cart.Description property this.cartDdl.DataTextField = "Description";//would rather use the obj property Cart.Description //Bind the ddl to the datasource this.cartDdl.DataBind(); HOW I WOULD THINK IT COULD WORK this.cartDdl.DataValueField = ((Cart)this.cartDdl.DataSourceObject).ID; this.cartDdl.DataTextField = ((Cart)this.cartDdl.DataSourceObject).Description;
I have a complicated report that nests six deep and so really hits the database hard. I want to use SqlDataReaders NOT DataAdapters and DataSets because I don't want big tables in memory.
MARS can get me the data fast, all from the one connection. But all the examples show it binding to a treeview.
I want to bind it to nested GridViews (six deep!).
Any examples of MARS binding to nested gridview/list/repeater controls of any kind?
I have two SQL queries that are stored procedures that have 2 variables that my web form will be supplying through text boxes. The two queries will produce two different results. I have read a couple of different of the MSDN articles online, including this one:
[URL]
that say that the tables must be similar to be able to merge them into a single datagridview. I know that datagridviews only like one table at a time, but I was curious if anyone had found a way to merge two dissimilar tables to one datagridview or not.
Been using MvcContrib for strongly typed redirects since MVC1. Aren't we there yet with MVC3 or did I miss something (just been scratching the surface)
I have an application that is going to allow a user to create records of type Customer and Seller that have one section in common, but other fields that are unique to their types.
Both of these types will have an address block for their create view.
If I have a strongly typed Customer or Seller view, how can I use the view partial (containing the address block) that I've created? I've tried creating a view model, but I don't know how to have the create page inherit the Customer model and the addressBlock partial inherit the addressBlockForm partial model...