techpr0
asked on
pulling data from a detailsview
ASP.NET 2.0/VB.NET 2.0 and sql server 05: I have a form that when the user chooses a "unit no" from a drop down list it fills several textboxes on a form. Being that I'm using a sqldatasource I have to do this with a detailsview (or formview). I read the only way to do this. Well, the data that's been populated in these two detailviews needs to be saved to a different database. These detailsview fields are part of a "unit record". I need to know how to pull the data from these detailviews. Each dvonly has one label in it. How is this done?
Am I close???
dvWellName.Rows(0).Cells(0).Text
Used like: command.Parameters.Add("@WellName", SqlDbType.VarChar).Value = dvWellName.Rows(0).Cells(0).Text
ASKER
Jen,
Thanks for your effort but I'm a bit confused. Are you sure you're explaining how to pull a value from a Details View? I don't see a DetailsView listed any where in your explaination. If I'm wrong I apologize but it's just not clear. I have a DetailsView with one label (template field) that gets populated by a sqldatasource that I need to pull the/a value from to save else where. Please help.
Thanks for your effort but I'm a bit confused. Are you sure you're explaining how to pull a value from a Details View? I don't see a DetailsView listed any where in your explaination. If I'm wrong I apologize but it's just not clear. I have a DetailsView with one label (template field) that gets populated by a sqldatasource that I need to pull the/a value from to save else where. Please help.
No problem.
What I'm trying to have you do is dump the content of your DetailsView control into a DataTable. That is what the dt.Fill(DetailsView) does.
Onces its in the DataTable, there is a lot more options availble to you.
Hope that makes sense.
What I'm trying to have you do is dump the content of your DetailsView control into a DataTable. That is what the dt.Fill(DetailsView) does.
Onces its in the DataTable, there is a lot more options availble to you.
Hope that makes sense.
ASKER
Ok, yes. Now I do understand. Here's my vb.net version with the parameter.add code added:
Dim ds As DataSet
ds.Fill(dvWellName)
For Eachdr as DataRow dr in ds
' here you can do stuff
command.Parameters.Add("@W ellName", SqlDbType.VarChar).Value = dr("Well Name")
Next
When I run I get the error:
Error 1 C:\Inetpub\wwwroot\...\Uni tMF.aspx.v b(82): error BC30456: 'Fill' is not a member of 'System.Data.DataSet'.
Is .Fill only a c# function? What can I do to make this work. Your help is appreciated.
Dim ds As DataSet
ds.Fill(dvWellName)
For Eachdr as DataRow dr in ds
' here you can do stuff
command.Parameters.Add("@W
Next
When I run I get the error:
Error 1 C:\Inetpub\wwwroot\...\Uni
Is .Fill only a c# function? What can I do to make this work. Your help is appreciated.
Hi! DataAdapter(SqlClient/OleD b) has the Fill() method not Dataset.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Sorry to be a PITA but could you maybe give me an example of adding the control's values to the DataAdapter.
techpr0 - I would never call you a PITA :P
You can get the text in each cell of the row by
dvWellName.Rows[i].Cells[j ].Text
OR IN VB
dvWellName.Rows(i).Cells(j ).Text
So, you could like loop through each row in the dvWellName control, and add it to a datarow in a dataset, then you have this nice dataset that you can do oh so much fun stuff with. YAY!
See how Rows[] is an array? That should be the key to getting what you need...
...erm... what was it again that you were trying to do?
-- jenni
You can get the text in each cell of the row by
dvWellName.Rows[i].Cells[j
OR IN VB
dvWellName.Rows(i).Cells(j
So, you could like loop through each row in the dvWellName control, and add it to a datarow in a dataset, then you have this nice dataset that you can do oh so much fun stuff with. YAY!
See how Rows[] is an array? That should be the key to getting what you need...
...erm... what was it again that you were trying to do?
-- jenni
ASKER
thanks jenni, really i was just wondering about the syntax of adding the control's values to the DataAdapter. but wheather you get back with me or not you certainly earned these points.
Once you populate the dataview it becomes an object you can access.
In your code behind you can access the contents like this:
DataSet ds;
ds.Fill(dvWellName);
ForEach(DataRow dr in ds) {
// here you can do stuff
dr["myCOlumnName"];
}
or maybe you coudl do this:
For(int i = 0; i<dvWellName.Items.Count; i++) {
command.Parameters.Add(dr[
At any rate, the solution lies in creating a DATAROW and DATACOLUMNs, filling them with the contenst of your dataview, and maniuplating. Here is a better code sample:
private void CreateNewDataRow()
{
// Use the MakeTable function below to create a new table.
DataTable table;
table = MakeNamesTable();
// Once a table has been created, use the
// NewRow to create a DataRow.
DataRow row;
row = table.NewRow();
// Then add the new row to the collection.
row["fName"] = "John";
row["lName"] = "Smith";
table.Rows.Add(row);
foreach(DataColumn column in table.Columns)
Console.WriteLine(column.C
dataGrid1.DataSource=table
}
private DataTable MakeNamesTable()
{
// Create a new DataTable titled 'Names.'
DataTable namesTable = new DataTable("Names");
// Add three column objects to the table.
DataColumn idColumn = new DataColumn();
idColumn.DataType = System.Type.GetType("Syste
idColumn.ColumnName = "id";
idColumn.AutoIncrement = true;
namesTable.Columns.Add(idC
DataColumn fNameColumn = new DataColumn();
fNameColumn.DataType = System.Type.GetType("Syste
fNameColumn.ColumnName = "Fname";
fNameColumn.DefaultValue = "Fname";
namesTable.Columns.Add(fNa
DataColumn lNameColumn = new DataColumn();
lNameColumn.DataType = System.Type.GetType("Syste
lNameColumn.ColumnName = "LName";
namesTable.Columns.Add(lNa
// Create an array for DataColumn objects.
DataColumn [] keys = new DataColumn [1];
keys[0] = idColumn;
namesTable.PrimaryKey = keys;
// Return the new DataTable.
return namesTable;
}
-- Jenni
For a better code sample, sen