How would I insert multiple rows of data from one form?

  • Thread starter Thread starter SSP
  • Start date Start date
S

SSP

Dear ASP.NETers,

How would I insert multiple rows of data from a web form?

Are there any tute's and stuff around. Couldn't find any myself.

Thanks in advance.
SSP
 
Hi SSP,

Yes, you can insert multiple rows of data from a webform.
simply call sproc, how many number of times you want to
insert data.

HTH

Ravikanth
 
Hi Ravikanth,

I can't use sproc's unfortunately.

I am using ACCESS 2000 database.

Any other methods?

SSP
 
I am half way there to figuring it out.

So far I have managed to write the following code to insert an array into
the database.

Now I have to figure out how to get the relevant DataList fields into an
array (to insert into the database). Any ideas on creating a dynamic array.

Code:

private void Submit1_ServerClick(object sender, System.EventArgs e)
{
// Create an Array
string[,] tippings = new string[,] {{"988", "AUS", "hhhty"}, {"56678",
"SA", "LfghghjLL"}, {"2367673", "NZ", "dfdfghgfjgfhf"}};
// Loop through the Array and insert one by one.
for (int i = 0; i <= tippings.Rank; i++) {
oleDbInsertCommand2.Parameters["SomeD"].Value = tippings[i, 0];
oleDbInsertCommand2.Parameters["SomeValue"].Value = tippings[i, 1];
oleDbInsertCommand2.Parameters["SomeOtherValue"].Value = tippings[i, 2];
oleDbConnection1.Open();
oleDbInsertCommand2.ExecuteNonQuery();
oleDbConnection1.Close();
}
}

SSP
 
I'm not sure if I'm answering the question you are asking, but if you need
to create a dynamic array (to replace the static dummy array "string[,]
tippings") that is pretty simple:

name the all your input fields for each row the same (using a numerical
sequence for each extra row), when you submit, use something like:

// for loop
string[] row = Request.Form[ strPrefix +
iRowName.ToString() ].ToString.Split(", ");
AddRowToDB( row );
//end for loop

It would be a whole lot easier to do this using a DataGrid, DataSet,
DataAdapter, and relative Commands for the DataAdapter.

// Mike

SSP said:
I am half way there to figuring it out.

So far I have managed to write the following code to insert an array into
the database.

Now I have to figure out how to get the relevant DataList fields into an
array (to insert into the database). Any ideas on creating a dynamic array.

Code:

private void Submit1_ServerClick(object sender, System.EventArgs e)
{
// Create an Array
string[,] tippings = new string[,] {{"988", "AUS", "hhhty"}, {"56678",
"SA", "LfghghjLL"}, {"2367673", "NZ", "dfdfghgfjgfhf"}};
// Loop through the Array and insert one by one.
for (int i = 0; i <= tippings.Rank; i++) {
oleDbInsertCommand2.Parameters["SomeD"].Value = tippings[i, 0];
oleDbInsertCommand2.Parameters["SomeValue"].Value = tippings[i, 1];
oleDbInsertCommand2.Parameters["SomeOtherValue"].Value = tippings[i, 2];
oleDbConnection1.Open();
oleDbInsertCommand2.ExecuteNonQuery();
oleDbConnection1.Close();
}
}

SSP

SSP said:
Dear ASP.NETers,

How would I insert multiple rows of data from a web form?

Are there any tute's and stuff around. Couldn't find any myself.

Thanks in advance.
SSP
 
OK I tried and I can't still manage it.

Here's the full scenario:
What I am building is a footy tipping (pool) competition app. What I am
trying to do is to allow lots of people to tip the winning team from a list
of games to be played every week. This schematic shoulf give an idea of the
tipping form:

Tipping Form


Date Time Home Team Visiting Team Tie
2 Aug, 03 7:00 PM England Fiji
2 Aug, 03 7:00 PM Fiji Australia
2 Aug, 03 7:00 PM New Zealand Australia






This is the datagrid my ASPX Page:
-------------------------------------------------------------------
<asp:datagrid id=DataGrid1 runat="server" Width="100%"
AutoGenerateColumns="False" DataMember="Table" DataKeyField="GameID"
DataSource="<%# dsMatchesForTipping1 %>" ForeColor="Black" GridLines="None"
CellPadding="2" BackColor="LightGoldenrodYellow" BorderWidth="0px"
BorderColor="Tan">
<Columns>
<asp:TemplateColumn SortExpression="GameID">
<ItemTemplate>
<input type="hidden" runat="server" name="GameID" id="GameID" value='<%#
DataBinder.Eval(Container.DataItem, "GameID") %>' />
</ItemTemplate>
</asp:TemplateColumn>

<asp:BoundColumn DataField="Date" SortExpression="Date" HeaderText="Date"
DataFormatString="{0:d MMM, yy}" />
<asp:BoundColumn DataField="Time" SortExpression="Time" HeaderText="Time"
DataFormatString="{0:t}" />
<asp:BoundColumn DataField="HomeTeamName" SortExpression="HomeTeamName"
HeaderText="Home Team" />
<asp:TemplateColumn SortExpression="HomeTeamID">
<ItemTemplate>
<INPUT id="radioButtonPickHomeTeam" runat="server" type="radio" value='<%#
DataBinder.Eval(Container.DataItem, "HomeTeamID") %>' name="Pick">
</ItemTemplate>
</asp:TemplateColumn>

<asp:BoundColumn DataField="VisitingTeamName"
SortExpression="VisitingTeamName" HeaderText="Visiting Team" />

<asp:TemplateColumn SortExpression="VisitingTeamID">
<ItemTemplate>
<INPUT id="radioButtonPickVisitingTeam" runat="server" type="radio"
value='<%# DataBinder.Eval(Container.DataItem, "VisitingTeamID") %>'
name="Pick">
</ItemTemplate>
</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="Tie">
<ItemTemplate>
<INPUT id="radioButtonPickTie" runat="server" type="radio" value="Tie"
name="Pick">
</ItemTemplate>
</asp:TemplateColumn>

<asp:TemplateColumn SortExpression="UserEmail">
<ItemTemplate>
<input type="hidden" runat="server" name="UserEmail" id="UserEmail"
value="(e-mail address removed)" />
</ItemTemplate>
</asp:TemplateColumn>

</Columns>
</asp:datagrid>
----------------------------------------------------------------------------
----

For the Code Behind Page:
----------------------------------------------------------------------------
------
private void Submit1_ServerClick(object sender, System.EventArgs e)
{
string[,] tippings = new string[,] {{"988", "AUS", "hhhty"}, {"56678",
"SA", "LfghghjLL"}, {"2367673", "NZ", "dfdfghgfjgfhf"}};

for (int i = 0; i <= tippings.Rank; i++) {
oleDbInsertCommand2.Parameters["GameID"].Value = tippings[i, 0];
oleDbInsertCommand2.Parameters["Pick"].Value = tippings[i, 1];
oleDbInsertCommand2.Parameters["Username"].Value = tippings[i, 2];
oleDbConnection1.Open();
oleDbInsertCommand2.ExecuteNonQuery();
oleDbConnection1.Close();
}
}
----------------------------------------------------------------------------
----------

Basically, if I am able to insert in the database the array "tippings"; then
I should be able to dynamically populate the "tippings" array and then
insert it into the database.

Unfortunately I am unable to do it ;-( and time isn't on my side either.

Any ideas?

SSP

Mike S said:
I'm not sure if I'm answering the question you are asking, but if you need
to create a dynamic array (to replace the static dummy array "string[,]
tippings") that is pretty simple:

name the all your input fields for each row the same (using a numerical
sequence for each extra row), when you submit, use something like:

// for loop
string[] row = Request.Form[ strPrefix +
iRowName.ToString() ].ToString.Split(", ");
AddRowToDB( row );
//end for loop

It would be a whole lot easier to do this using a DataGrid, DataSet,
DataAdapter, and relative Commands for the DataAdapter.

// Mike
 
Back
Top