Saturday, March 31, 2012

submitting form values

Hi all, (fyi, I know ASP well, .NET is new)

ok, submitting a form. Few things:

1. the form is a custom collage of textboxes, no formview, no detailsview, just textboxes, dropdownlists, and datavalidators.

2. The form get populated via querystring'd 'UserID' as so:---------------

Dim myConnection As OleDbConnection
Dim myCommand As OleDbCommand
Dim strSQL As String
Dim myDataReader As OleDbDataReader

Session.Item("CurrentUserIDtoEdit") = Request.QueryString("UserID")

strSQL = "SELECT * FROM Users " _
& "WHERE uniqueid='" & Session.Item("CurrentUserIDtoEdit") & "'"

myConnection = New OleDbConnection(System.Configuration.ConfigurationManager.AppSettings("strConn"))

myCommand = New OleDbCommand(strSQL, myConnection)

myConnection.Open()
myDataReader = myCommand.ExecuteReader()
Do While (myDataReader.Read())
TextboxFirstName.Text = Convert.ToString(myDataReader("FirstName"))
TextboxLastName.Text = Convert.ToString(myDataReader("LastName"))
TextboxAddress1.Text = Convert.ToString(myDataReader("Address1"))
TextboxAddress2.Text = Convert.ToString(myDataReader("Address2"))
TextboxCity.Text = Convert.ToString(myDataReader("City"))
DropDownState.SelectedValue = Convert.ToString(myDataReader("State"))
TextBoxZipCode.Text = Convert.ToString(myDataReader("Zip"))
TextBoxPhone.Text = Convert.ToString(myDataReader("Phone"))
TextBoxEmail.Text = Convert.ToString(myDataReader("emailaddress"))
TextboxUsername.Text = Convert.ToString(myDataReader("Username"))
TextboxPassword.Text = Convert.ToString(myDataReader("Password"))
DropDownListPermissionLevel.SelectedValue = myDataReader("PermissionLevel")
CheckBoxDeleted.Checked = Convert.ToBoolean(myDataReader("Deleted"))
Loop
myDataReader.Close()
myConnection.Close()

--------------THIS WORKS GREAT

Question is, this page is a 'Modify User' page. What I want is it to populate with current 'User' data from the DB (that's working fine. as above)

AND, when resubmitted, update the DB with the new data from the form, show a 'success label' of some sort with a minor delay, and response.redirect to 'Menu.aspx'

isPostBack is an option, yes...but how to integrate that conditional coding with a SQLDataObject? or do I hard code the update like the above code...and how?

(I have the Stored Procedure as follows)----------

CREATE PROCEDURE dbo.UpdateUser
(
@dotnet.itags.org.UniqueID int,
@dotnet.itags.org.FirstName nvarchar(50),
@dotnet.itags.org.LastName nvarchar(50),
@dotnet.itags.org.Address1 nvarchar(100),
@dotnet.itags.org.Address2 nvarchar(100),
@dotnet.itags.org.City char(100),
@dotnet.itags.org.State char(2),
@dotnet.itags.org.Zip char(5),
@dotnet.itags.org.Phone char(10),
@dotnet.itags.org.emailaddress nvarchar(100),
@dotnet.itags.org.Username nvarchar(50),
@dotnet.itags.org.Password nvarchar(50),
@dotnet.itags.org.PermissionLevel char(1),
@dotnet.itags.org.Deleted bit,
@dotnet.itags.org.SystemUserID int

)
AS
SET NOCOUNT OFF;
UPDATE Users
SET
FirstName = @dotnet.itags.org.FirstName,
LastName = @dotnet.itags.org.LastName,
Address1 = @dotnet.itags.org.Address1,
Address2 = @dotnet.itags.org.Address2,
City = @dotnet.itags.org.City,
State = @dotnet.itags.org.State,
Zip = @dotnet.itags.org.Zip,
Phone = @dotnet.itags.org.Phone,
emailaddress = @dotnet.itags.org.emailaddress,
username = @dotnet.itags.org.Username,
[Password] = @dotnet.itags.org.Password,
PermissionLevel = @dotnet.itags.org.PermissionLevel,
Deleted = @dotnet.itags.org.Deleted,

LastModifiedBy = @dotnet.itags.org.SystemUserID,
LastModifiedDate = CURRENT_TIMESTAMP

where Uniqueid = @dotnet.itags.org.UniqueID
GO

-----------

Do I somehow, link the SQLDataobject with the 'onclick' event of the 'submit' button?

NOTE: I figured out that the SQLDataobject has an updatecommandtype and an updatequery property panel where I set the params for the SP correctly to the form vars and session.items so it's ready to go...

---

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ProductionConnectionString %>"
InsertCommand="InsertUser" InsertCommandType="StoredProcedure" SelectCommand="GetUser"
SelectCommandType="StoredProcedure" UpdateCommand="UpdateUser" UpdateCommandType="StoredProcedure">
<UpdateParameters>
<asp:SessionParameter Name="UniqueID" SessionField="CurrentUserIDtoEdit" Type="Int32" />
<asp:ControlParameter ControlID="TextboxFirstName" Name="FirstName" PropertyName="Text"
Type="String" />
<asp:ControlParameter ControlID="TextboxLastName" Name="LastName" PropertyName="Text"
Type="String" />
<asp:ControlParameter ControlID="TextboxAddress1" Name="Address1" PropertyName="Text"
Type="String" />
<asp:ControlParameter ControlID="TextboxAddress2" Name="Address2" PropertyName="Text"
Type="String" />
<asp:ControlParameter ControlID="TextboxCity" Name="City" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="DropDownState" Name="State" PropertyName="SelectedValue"
Type="String" />
<asp:ControlParameter ControlID="TextBoxZipCode" Name="Zip" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="TextBoxPhone" Name="Phone" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="TextBoxEmail" Name="emailaddress" PropertyName="Text"
Type="String" />
<asp:ControlParameter ControlID="TextboxUsername" Name="Username" PropertyName="Text"
Type="String" />
<asp:ControlParameter ControlID="TextboxPassword" Name="Password" PropertyName="Text"
Type="String" />
<asp:ControlParameter ControlID="DropDownListPermissionLevel" Name="PermissionLevel"
PropertyName="SelectedValue" Type="String" />
<asp:ControlParameter ControlID="CheckBoxDeleted" Name="Deleted" PropertyName="Checked"
Type="Boolean" />
<asp:SessionParameter Name="SystemUserID" SessionField="UserID" Type="Int32" />
<asp:Parameter Direction="ReturnValue" Name="RETURN_VALUE" Type="Int32" />
</UpdateParameters>
<SelectParameters>
<asp:QueryStringParameter DefaultValue="" Name="UserID" QueryStringField="UserID"
Type="Int32" />
</SelectParameters>
<InsertParameters>
<asp:Parameter Name="FirstName" Type="String" />
<asp:Parameter Name="LastName" Type="String" />
<asp:Parameter Name="Address1" Type="String" />
<asp:Parameter Name="Address2" Type="String" />
<asp:Parameter Name="City" Type="String" />
<asp:Parameter Name="State" Type="String" />
<asp:Parameter Name="Zip" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
<asp:Parameter Name="Fax" Type="String" />
<asp:Parameter Name="emailaddress" Type="String" />
<asp:Parameter Name="Username" Type="String" />
<asp:Parameter Name="Password" Type="String" />
<asp:Parameter Name="PermissionLevel" Type="String" />
<asp:Parameter Name="CurrentUserID" Type="Int32" />
</InsertParameters>
</asp:SqlDataSource>
<table>
<tr>
<td colspan="3" align="left"><asp:Label ID="Label1" runat="server" Text="Modify User" Font-Size="Large"></asp:Label></td>
</tr>
<tr>
<td style="height: 24px">First Name</td>
<td style="height: 24px"><asp:TextBox ID="TextboxFirstName" runat="server"></asp:TextBox></td>
<td style="height: 24px"><asp:RequiredFieldValidator ID="RequiredFieldValidatorFirstName" runat="server" ControlToValidate="TextboxFirstName"
ErrorMessage="First Name Required"></asp:RequiredFieldValidator> </td>
</tr>
<tr>
<td>Last Name</td>
<td><asp:TextBox ID="TextboxLastName" runat="server"></asp:TextBox></td>
<td><asp:RequiredFieldValidator ID="RequiredFieldValidatorLastName" runat="server"
ControlToValidate="TextboxLastName" ErrorMessage="Last Name Required"></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td>Address 1</td>
<td><asp:TextBox ID="TextboxAddress1" runat="server"></asp:TextBox></td>
<td><asp:RequiredFieldValidator ID="RequiredFieldValidatorAddress1" runat="server"
ControlToValidate="TextboxAddress1" ErrorMessage="Address Required"></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td>Address 2</td>
<td><asp:TextBox ID="TextboxAddress2" runat="server"></asp:TextBox></td>
<td></td>
</tr>
<tr>
<td>City</td>
<td><asp:TextBox ID="TextboxCity" runat="server"></asp:TextBox></td>
<td><asp:RequiredFieldValidator ID="RequiredFieldCity" runat="server"
ControlToValidate="TextboxCity" ErrorMessage="City Required"></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td>State</td>
<td><asp:DropDownList id="DropDownState" runat="server"
<asp:ListItem Value="AL">Alabama</asp:ListItem
<asp:ListItem Value="AK">Alaska</asp:ListItem
<asp:ListItem Value="AZ">Arizona</asp:ListItem
<asp:ListItem Value="AR">Arkansas</asp:ListItem
<asp:ListItem Value="CA">California</asp:ListItem
<asp:ListItem Value="CO">Colorado</asp:ListItem
<asp:ListItem Value="CT">Connecticut</asp:ListItem
<asp:ListItem Value="DC">District of Columbia</asp:ListItem
<asp:ListItem Value="DE">Delaware</asp:ListItem
<asp:ListItem Value="FL">Florida</asp:ListItem
<asp:ListItem Value="GA">Georgia</asp:ListItem
<asp:ListItem Value="HI">Hawaii</asp:ListItem
<asp:ListItem Value="ID">Idaho</asp:ListItem
<asp:ListItem Value="IL">Illinois</asp:ListItem
<asp:ListItem Value="IN">Indiana</asp:ListItem
<asp:ListItem Value="IA">Iowa</asp:ListItem
<asp:ListItem Value="KS">Kansas</asp:ListItem
<asp:ListItem Value="KY">Kentucky</asp:ListItem
<asp:ListItem Value="LA">Louisiana</asp:ListItem
<asp:ListItem Value="ME">Maine</asp:ListItem
<asp:ListItem Value="MD">Maryland</asp:ListItem
<asp:ListItem Value="MA">Massachusetts</asp:ListItem
<asp:ListItem Value="MI">Michigan</asp:ListItem
<asp:ListItem Value="MN">Minnesota</asp:ListItem
<asp:ListItem Value="MS">Mississippi</asp:ListItem
<asp:ListItem Value="MO">Missouri</asp:ListItem
<asp:ListItem Value="MT">Montana</asp:ListItem
<asp:ListItem Value="NE">Nebraska</asp:ListItem
<asp:ListItem Value="NV">Nevada</asp:ListItem
<asp:ListItem Value="NH">New Hampshire</asp:ListItem
<asp:ListItem Value="NJ">New Jersey</asp:ListItem
<asp:ListItem Value="NM">New Mexico</asp:ListItem
<asp:ListItem Value="NY">New York</asp:ListItem
<asp:ListItem Value="NC">North Carolina</asp:ListItem
<asp:ListItem Value="ND">North Dakota</asp:ListItem
<asp:ListItem Value="OH">Ohio</asp:ListItem
<asp:ListItem Value="OK">Oklahoma</asp:ListItem
<asp:ListItem Value="OR">Oregon</asp:ListItem
<asp:ListItem Value="PA">Pennsylvania</asp:ListItem
<asp:ListItem Value="RI">Rhode Island</asp:ListItem
<asp:ListItem Value="SC">South Carolina</asp:ListItem
<asp:ListItem Value="SD">South Dakota</asp:ListItem
<asp:ListItem Value="TN">Tennessee</asp:ListItem
<asp:ListItem Value="TX">Texas</asp:ListItem
<asp:ListItem Value="UT">Utah</asp:ListItem
<asp:ListItem Value="VT">Vermont</asp:ListItem
<asp:ListItem Value="VA">Virginia</asp:ListItem
<asp:ListItem Value="WA">Washington</asp:ListItem
<asp:ListItem Value="WV">West Virginia</asp:ListItem
<asp:ListItem Value="WI">Wisconsin</asp:ListItem
<asp:ListItem Value="WY">Wyoming</asp:ListItem
</asp:DropDownList>
</td>
<td></td>
</tr>
<tr>
<td>Zip Code</td>
<td><asp:TextBox ID="TextBoxZipCode" runat="server"></asp:TextBox></td>
<td><asp:RegularExpressionValidator id="RegularExpressionValidatorZipCode" runat="server" ErrorMessage="Zip format (12345-1234) last four optional" ControlToValidate="TextBoxZipCode" ValidationExpression="\d{5}(-\d{4})?"></asp:RegularExpressionValidator></td>
</tr>
<tr>
<td>Phone</td>
<td><asp:TextBox ID="TextBoxPhone" runat="server"></asp:TextBox></td>
<td><asp:RegularExpressionValidator ID="RegularExpressionValidatorPhone" runat="server" ErrorMessage="Phone Format (1234567890)" ControlToValidate="TextBoxPhone" ValidationExpression="((\(\d{3}\) ?)|(\d{3}))?\d{3}\d{4}"></asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td>Email</td>
<td><asp:TextBox ID="TextBoxEmail" runat="server"></asp:TextBox></td>
<td><asp:RegularExpressionValidator id="RegularExpressionValidatorEmail" runat="server" ErrorMessage="Email format (a@dotnet.itags.org.a.com)" ControlToValidate="TextBoxEmail" ValidationExpression="\w+([-+.']\w+)*@dotnet.itags.org.\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator></td>
</tr>
<tr>
<td>Username</td>
<td><asp:TextBox ID="TextboxUsername" runat="server"></asp:TextBox></td>
<td><asp:RegularExpressionValidator ID="RegularExpressionValidatorUsername" runat="server" ErrorMessage="Username must be 4 chars long and start with a letter." ControlToValidate="TextboxUsername" ValidationExpression="^[A-Za-z]\w{3,}$"></asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td>Password</td>
<td><asp:TextBox ID="TextboxPassword" runat="server"></asp:TextBox></td>
<td><asp:RequiredFieldValidator ID="RequiredFieldValidatorPassword" runat="server"
ControlToValidate="TextboxPassword" ErrorMessage="Password Required"></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td>Permission Level</td>
<td><asp:DropDownList ID="DropDownListPermissionLevel" runat="server">
<asp:ListItem Selected="True">Select One...</asp:ListItem>
<asp:ListItem Value="1">Admin</asp:ListItem>
<asp:ListItem Value="2">Manager</asp:ListItem>
</asp:DropDownList></td>
<td></td>
</tr>
<tr>
<td>Deleted</td>
<td><asp:CheckBox ID="CheckBoxDeleted" runat="server" /></td>
<td></td>
</tr>

<tr><td colspan="3">
<asp:ValidationSummary ID="ValidationSummaryAddUser" runat="server" />
</td></tr>
<tr>
<td style="height: 24px"><asp:Button ID="ResetButton" runat="server" Text="Reset" /></td>
<td style="height: 24px"><asp:Button ID="SubmitButton" runat="server" Text="Submit" /></td>
<td style="height: 24px"></td>
</tr>
</table>


</div>
</asp:Content>

---

just how to make the SQLDataobject and submit button onclick to like each other?

Thanks again all.

Hi,

Based on your description, I understand that you have created a SqlDataSource control on a table, and have created Select, Insert and Update command on it. If there is any misunderstanding, please feel free to let me know.

Usually, the Select command is fired by calling DataBind method on the controls. When binding, the method is called and the returned DataReader or DataSet is automatically bind to the controls.

For Update and Insert method, you will have to call the Update() or Insert() manually. In your case, call SqlDataSource1.Update() in the Submit button. If it's a newly added record, call SqlDataSource1.Insert().

If you need to know if the record has been added, you can use IF EXISTS statement to check existence in database.

IF EXISTS (SELECT * FROM t1 WHERE id = @.id)
BEGIN
--Call Update
END
ELSE
BEGIN
--Call Insert
END

Hope this helps.


Thank you for your reply.

Since my post, I've been non-stop .NET-in-ating and I've learned much. I wound up doing the following

Protected Sub SubmitButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SubmitButton.Click
Dim myConnection As OleDbConnection
Dim myCommand As OleDbCommand
Dim intUserCount As Integer
Dim strSQL As String

strSQL = "Insert into Users " _
& "(FirstName, LastName, Username, Password, Permissionlevel)" _
& "VALUES ('" & Trim(Replace(TextboxFirstName.Text, "'", "''")) & "','" _
& Trim(Replace(TextboxLastName.Text, "'", "''")) & "','" _
& Trim(Replace(TextboxUsername.Text, "'", "''")) & "','" _
& Trim(Replace(TextboxPassword.Text, "'", "''")) & "','" _
& Trim(Replace(DropDownListPermissionLevel.SelectedItem.Value, "'", "''")) & "')"

myConnection = New OleDbConnection(System.Configuration.ConfigurationManager.AppSettings("strConn"))

myCommand = New OleDbCommand(strSQL, myConnection)

myConnection.Open()
intUserCount = myCommand.ExecuteScalar()
myConnection.Close()


End Sub

But now, I've learned how to modify the 'templates' for a gridview/detailsview combo. I'm an old ASP guy, as I've said. So, messing with this has been good exercise to understand what's going on.

Since this posting, I've changed my whole view of how a 'control panel' could/needs to be laid out. This new .NET stuff is changing my way of 'organizing control panel' type portions of web sites.

As an exercise I'm converting www.beaudamore.com/ProductionManagement form old ASP into ASP.NET using VB as the base code. The whole way the 'Menu' is laid out is going to change in respect to this whole new programming style. I'm envisioning it different, simpler, but equally powerful. I will post more, perhaps my view form old ASP will help other 'old timers' as well. I think I took too long to make the change.

Thanks again.

0 comments:

Post a Comment