-cr-
asked on
Database Driven DDL
I have a 2 part question. First of I am new to ASP.Net and I am loving it.
My 1st question is I have a data driven dropdown list. It defaults to the first item as beeing selected and displays the grid. I would like to have nothing selected upon entry to the page but would like to have Select Type to appear as default text.
2nd how do I make sure that data is entered when adding a new record using the built in regular expressions?
<%@ Page Language="VB" %>
<script runat="server">
Protected Sub DetailsView1_ItemInserted( ByVal sender As Object, ByVal e As System.Web.UI.WebControls. DetailsVie wInsertedE ventArgs)
If (Not e.Exception Is Nothing) Then
ErrorMessageLabel.Text = "An error occured while entering this record. Please verify you have entered data in the correct format."
e.ExceptionHandled = True
End If
GridView1.DataBind()
End Sub
Protected Sub DetailsView1_ItemUpdated(B yVal sender As Object, ByVal e As System.Web.UI.WebControls. DetailsVie wUpdatedEv entArgs)
GridView1.DataBind()
End Sub
Protected Sub DropDownList1_SelectedInde xChanged(B yVal sender As Object, ByVal e As EventArgs)
DetailsView1.ChangeMode(De tailsViewM ode.ReadOn ly)
End Sub
Protected Sub GridView1_SelectedIndexCha nged(ByVal sender As Object, ByVal e As EventArgs)
DetailsView1.ChangeMode(De tailsViewM ode.ReadOn ly)
End Sub
Protected Sub GridView1_PageIndexChanged (ByVal sender As Object, ByVal e As EventArgs)
DetailsView1.ChangeMode(De tailsViewM ode.ReadOn ly)
End Sub
Protected Sub GridView1_Sorted(ByVal sender As Object, ByVal e As System.EventArgs)
DetailsView1.ChangeMode(De tailsViewM ode.ReadOn ly)
End Sub
Protected Sub GridView1_RowDeleted(ByVal sender As Object, ByVal e As GridViewDeletedEventArgs)
If (Not e.Exception Is Nothing) Then
ErrorMessageLabel.Text = "Failed to DELETE due to foreign key contstraint on the table. You may only delete rows which have no related records."
e.ExceptionHandled = True
End If
End Sub
Protected Sub DetailsView1_DataBound(ByV al sender As Object, ByVal e As EventArgs)
If (DetailsView1.CurrentMode = DetailsViewMode.Insert) Then
Dim stateTextBox As TextBox = CType(DetailsView1.Rows(6) .Cells(1). Controls(0 ), TextBox)
stateTextBox.Text = DropDownList1.SelectedValu e
stateTextBox.Enabled = False
End If
End Sub
</script>
<html>
<head id="Head1" runat="server">
<title>E-Risk Services Inventory</title>
<link rel="Stylesheet" href="style.css" />
</head>
<body>
<form id="form1" runat="server">
<b>Equipment Type:</b>
<asp:DropDownList ID="DropDownList1" DataSourceID="SqlDataSourc e2" AutoPostBack="true"
DataTextField="equipmentty pe" runat="server" OnSelectedIndexChanged="Dr opDownList 1_Selected IndexChang ed" />
<asp:SqlDataSource ID="SqlDataSource2" runat="server" SelectCommand="SELECT DISTINCT [equipmenttype] FROM [equipmenttype]"
ConnectionString="<%$ ConnectionStrings:BamAdmin Connection String %>" />
<br />
<br />
<table cellpadding="0" cellspacing="0">
<tr>
<td valign="top" style="width: 600px">
<asp:GridView ID="GridView1" AllowPaging="True" runat="server"
DataSourceID="SqlDataSourc e1" DataKeyNames="id"
AutoGenerateColumns="False " Width="500px" SelectedIndex="0" OnSelectedIndexChanged="Gr idView1_Se lectedInde xChanged" OnPageIndexChanged="GridVi ew1_PageIn dexChanged " OnRowDeleted="GridView1_Ro wDeleted" OnSorted="GridView1_Sorted " CellPadding="0" CellSpacing="0" GridLines="None">
<Columns>
<asp:CommandField ShowSelectButton="True" ShowDeleteButton="True" ButtonType="Image" DeleteImageUrl="~/images/d elete.gif" EditImageUrl="~/images/doc umentedit. gif" NewImageUrl="~/images/add. gif" CancelImageUrl="~/images/d elete.gif" SelectImageUrl="~/images/a pprove.gif " UpdateImageUrl="~/images/m oveup.gif" HeaderText="ACTION" >
<HeaderStyle Wrap="False" CssClass="headertitle" Font-Size="Small" HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" Wrap="False" />
</asp:CommandField>
<asp:BoundField DataField="equipmenttype" HeaderText="TYPE" SortExpression="equipmentt ype" >
<ItemStyle HorizontalAlign="Left" Wrap="False" />
<HeaderStyle CssClass="headertitle" Font-Size="Small" HorizontalAlign="Left" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="make" HeaderText="MAKE" SortExpression="make" >
<ItemStyle HorizontalAlign="Left" Wrap="False" />
<HeaderStyle CssClass="headertitle" Font-Size="Small" HorizontalAlign="Left" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="model" HeaderText="MODEL" SortExpression="model" >
<ItemStyle HorizontalAlign="Left" Wrap="False" />
<HeaderStyle CssClass="headertitle" Font-Size="Small" HorizontalAlign="Left" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="owner" HeaderText="OWNER" SortExpression="owner" >
<ItemStyle HorizontalAlign="Left" Wrap="False" />
<HeaderStyle CssClass="headertitle" Font-Size="Small" HorizontalAlign="Left" Wrap="False" />
</asp:BoundField>
</Columns>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle CssClass="Tdatagray" />
<EditRowStyle BackColor="#999999" />
<RowStyle CssClass="tdatasilva" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:BamAdmin Connection String %>"
SelectCommand="SELECT [id], [equipmenttype], [make], [model], [serial], [owner], [name] FROM [hardwareinventory] WHERE ([equipmenttype] = @equipmenttype)"
DeleteCommand="DELETE FROM [hardwareinventory] WHERE [id] = @id">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="equipmenttype" PropertyName="SelectedValu e"
Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:HyperLink ID="HyperLink1" ImageUrl="~/images/add.gif " Text="New" NavigateUrl="DetailsViewIn sert.aspx" runat="server" /><small>new</small>
<asp:HyperLink ID="HyperLink2" ImageUrl="~/images/delete. gif" Text="Cnacel" NavigateUrl="Details.aspx" runat="server" /><small>cancel</small>
</td>
<td valign="top" style="width: 225px">
<asp:DetailsView AutoGenerateRows="False" DataKeyNames="id" DataSourceID="SqlDataSourc e3"
HeaderText="EQUIPMENT DETAILS" CssClass="headertitle" ID="DetailsView1" runat="server" Width="275px" OnItemUpdated="DetailsView 1_ItemUpda ted" OnItemInserted="DetailsVie w1_ItemIns erted" OnDataBound="DetailsView1_ DataBound" >
<Fields>
<asp:BoundField DataField="id" HeaderText="id" ReadOnly="True" SortExpression="id" >
<ItemStyle CssClass="box_title" HorizontalAlign="Left" VerticalAlign="Top" Wrap="False" />
<HeaderStyle CssClass="tdatagray" HorizontalAlign="Left" VerticalAlign="Top" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="make" HeaderText="make" SortExpression="make" >
<ItemStyle CssClass="box_title" HorizontalAlign="Left" VerticalAlign="Top" Wrap="False" />
<HeaderStyle CssClass="tdatagray" HorizontalAlign="Left" VerticalAlign="Top" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="model" HeaderText="model" SortExpression="model" >
<ItemStyle CssClass="box_title" />
<HeaderStyle CssClass="tdatagray" />
</asp:BoundField>
<asp:BoundField DataField="serial" HeaderText="serial" SortExpression="serial" >
<ItemStyle CssClass="box_title" />
<HeaderStyle CssClass="tdatagray" />
</asp:BoundField>
<asp:BoundField DataField="owner" HeaderText="owner" SortExpression="owner" >
<ItemStyle CssClass="box_title" />
<HeaderStyle CssClass="tdatagray" />
</asp:BoundField>
<asp:BoundField DataField="name" HeaderText="name" SortExpression="name" >
<ItemStyle CssClass="box_title" />
<HeaderStyle CssClass="tdatagray" />
</asp:BoundField>
<asp:BoundField DataField="equipmenttype" HeaderText="type" SortExpression="equipmentt ype" >
<ItemStyle CssClass="box_title" />
<HeaderStyle CssClass="tdatagray" />
</asp:BoundField>
<asp:CommandField ButtonType="Image" EditImageUrl="~/images/doc umentedit. gif" CancelImageUrl="~/images/d elete.gif" InsertImageUrl="~/images/d isk.gif" NewImageUrl="~/images/add. gif" UpdateImageUrl="~/images/m oveup.gif" HeaderText="Action"
ShowEditButton="True" ShowInsertButton="True">
<HeaderStyle CssClass="tdata" />
<ItemStyle CssClass="tdata" />
</asp:CommandField>
</Fields>
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:BamAdmin Connection String %>"
SelectCommand="SELECT [id], [equipmenttype], [make], [model], [serial], [owner], [name] FROM [hardwareinventory] WHERE ([id] = @id)"
UpdateCommand="UPDATE [hardwareinventory] SET [equipmenttype] = @equipmenttype, [make] = @make, [model] = @model, [serial] = @serial, [owner] = @owner, [name] = @name WHERE [id] = @id"
InsertCommand="INSERT INTO [hardwareinventory] ([equipmenttype], [make], [model], [serial], [owner], [name]) VALUES (@equipmenttype, @make, @model, @serial, @owner, @name)">
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" Name="id" PropertyName="SelectedValu e"
Type="String" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="equipmenttype" Type="String" />
<asp:Parameter Name="make" Type="String" />
<asp:Parameter Name="model" Type="String" />
<asp:Parameter Name="serial" Type="String" />
<asp:Parameter Name="owner" Type="String" />
<asp:Parameter Name="name" Type="String" />
<asp:Parameter Name="id" Type="String" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="make" Type="String" />
<asp:Parameter Name="model" Type="String" />
<asp:Parameter Name="serial" Type="String" />
<asp:Parameter Name="owner" Type="String" />
<asp:Parameter Name="name" Type="String" />
<asp:Parameter Name="equipmenttype" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
</td>
</tr>
</table>
<br />
<asp:Label ID="ErrorMessageLabel" EnableViewState="false" runat="server" />
</form>
</body>
</html>
My 1st question is I have a data driven dropdown list. It defaults to the first item as beeing selected and displays the grid. I would like to have nothing selected upon entry to the page but would like to have Select Type to appear as default text.
2nd how do I make sure that data is entered when adding a new record using the built in regular expressions?
<%@ Page Language="VB" %>
<script runat="server">
Protected Sub DetailsView1_ItemInserted(
If (Not e.Exception Is Nothing) Then
ErrorMessageLabel.Text = "An error occured while entering this record. Please verify you have entered data in the correct format."
e.ExceptionHandled = True
End If
GridView1.DataBind()
End Sub
Protected Sub DetailsView1_ItemUpdated(B
GridView1.DataBind()
End Sub
Protected Sub DropDownList1_SelectedInde
DetailsView1.ChangeMode(De
End Sub
Protected Sub GridView1_SelectedIndexCha
DetailsView1.ChangeMode(De
End Sub
Protected Sub GridView1_PageIndexChanged
DetailsView1.ChangeMode(De
End Sub
Protected Sub GridView1_Sorted(ByVal sender As Object, ByVal e As System.EventArgs)
DetailsView1.ChangeMode(De
End Sub
Protected Sub GridView1_RowDeleted(ByVal
If (Not e.Exception Is Nothing) Then
ErrorMessageLabel.Text = "Failed to DELETE due to foreign key contstraint on the table. You may only delete rows which have no related records."
e.ExceptionHandled = True
End If
End Sub
Protected Sub DetailsView1_DataBound(ByV
If (DetailsView1.CurrentMode = DetailsViewMode.Insert) Then
Dim stateTextBox As TextBox = CType(DetailsView1.Rows(6)
stateTextBox.Text = DropDownList1.SelectedValu
stateTextBox.Enabled = False
End If
End Sub
</script>
<html>
<head id="Head1" runat="server">
<title>E-Risk Services Inventory</title>
<link rel="Stylesheet" href="style.css" />
</head>
<body>
<form id="form1" runat="server">
<b>Equipment Type:</b>
<asp:DropDownList ID="DropDownList1" DataSourceID="SqlDataSourc
DataTextField="equipmentty
<asp:SqlDataSource ID="SqlDataSource2" runat="server" SelectCommand="SELECT DISTINCT [equipmenttype] FROM [equipmenttype]"
ConnectionString="<%$ ConnectionStrings:BamAdmin
<br />
<br />
<table cellpadding="0" cellspacing="0">
<tr>
<td valign="top" style="width: 600px">
<asp:GridView ID="GridView1" AllowPaging="True" runat="server"
DataSourceID="SqlDataSourc
AutoGenerateColumns="False
<Columns>
<asp:CommandField ShowSelectButton="True" ShowDeleteButton="True" ButtonType="Image" DeleteImageUrl="~/images/d
<HeaderStyle Wrap="False" CssClass="headertitle" Font-Size="Small" HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" Wrap="False" />
</asp:CommandField>
<asp:BoundField DataField="equipmenttype" HeaderText="TYPE" SortExpression="equipmentt
<ItemStyle HorizontalAlign="Left" Wrap="False" />
<HeaderStyle CssClass="headertitle" Font-Size="Small" HorizontalAlign="Left" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="make" HeaderText="MAKE" SortExpression="make" >
<ItemStyle HorizontalAlign="Left" Wrap="False" />
<HeaderStyle CssClass="headertitle" Font-Size="Small" HorizontalAlign="Left" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="model" HeaderText="MODEL" SortExpression="model" >
<ItemStyle HorizontalAlign="Left" Wrap="False" />
<HeaderStyle CssClass="headertitle" Font-Size="Small" HorizontalAlign="Left" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="owner" HeaderText="OWNER" SortExpression="owner" >
<ItemStyle HorizontalAlign="Left" Wrap="False" />
<HeaderStyle CssClass="headertitle" Font-Size="Small" HorizontalAlign="Left" Wrap="False" />
</asp:BoundField>
</Columns>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle CssClass="Tdatagray" />
<EditRowStyle BackColor="#999999" />
<RowStyle CssClass="tdatasilva" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:BamAdmin
SelectCommand="SELECT [id], [equipmenttype], [make], [model], [serial], [owner], [name] FROM [hardwareinventory] WHERE ([equipmenttype] = @equipmenttype)"
DeleteCommand="DELETE FROM [hardwareinventory] WHERE [id] = @id">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="equipmenttype" PropertyName="SelectedValu
Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:HyperLink ID="HyperLink1" ImageUrl="~/images/add.gif
<asp:HyperLink ID="HyperLink2" ImageUrl="~/images/delete.
</td>
<td valign="top" style="width: 225px">
<asp:DetailsView AutoGenerateRows="False" DataKeyNames="id" DataSourceID="SqlDataSourc
HeaderText="EQUIPMENT DETAILS" CssClass="headertitle" ID="DetailsView1" runat="server" Width="275px" OnItemUpdated="DetailsView
<Fields>
<asp:BoundField DataField="id" HeaderText="id" ReadOnly="True" SortExpression="id" >
<ItemStyle CssClass="box_title" HorizontalAlign="Left" VerticalAlign="Top" Wrap="False" />
<HeaderStyle CssClass="tdatagray" HorizontalAlign="Left" VerticalAlign="Top" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="make" HeaderText="make" SortExpression="make" >
<ItemStyle CssClass="box_title" HorizontalAlign="Left" VerticalAlign="Top" Wrap="False" />
<HeaderStyle CssClass="tdatagray" HorizontalAlign="Left" VerticalAlign="Top" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="model" HeaderText="model" SortExpression="model" >
<ItemStyle CssClass="box_title" />
<HeaderStyle CssClass="tdatagray" />
</asp:BoundField>
<asp:BoundField DataField="serial" HeaderText="serial" SortExpression="serial" >
<ItemStyle CssClass="box_title" />
<HeaderStyle CssClass="tdatagray" />
</asp:BoundField>
<asp:BoundField DataField="owner" HeaderText="owner" SortExpression="owner" >
<ItemStyle CssClass="box_title" />
<HeaderStyle CssClass="tdatagray" />
</asp:BoundField>
<asp:BoundField DataField="name" HeaderText="name" SortExpression="name" >
<ItemStyle CssClass="box_title" />
<HeaderStyle CssClass="tdatagray" />
</asp:BoundField>
<asp:BoundField DataField="equipmenttype" HeaderText="type" SortExpression="equipmentt
<ItemStyle CssClass="box_title" />
<HeaderStyle CssClass="tdatagray" />
</asp:BoundField>
<asp:CommandField ButtonType="Image" EditImageUrl="~/images/doc
ShowEditButton="True" ShowInsertButton="True">
<HeaderStyle CssClass="tdata" />
<ItemStyle CssClass="tdata" />
</asp:CommandField>
</Fields>
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:BamAdmin
SelectCommand="SELECT [id], [equipmenttype], [make], [model], [serial], [owner], [name] FROM [hardwareinventory] WHERE ([id] = @id)"
UpdateCommand="UPDATE [hardwareinventory] SET [equipmenttype] = @equipmenttype, [make] = @make, [model] = @model, [serial] = @serial, [owner] = @owner, [name] = @name WHERE [id] = @id"
InsertCommand="INSERT INTO [hardwareinventory] ([equipmenttype], [make], [model], [serial], [owner], [name]) VALUES (@equipmenttype, @make, @model, @serial, @owner, @name)">
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" Name="id" PropertyName="SelectedValu
Type="String" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="equipmenttype" Type="String" />
<asp:Parameter Name="make" Type="String" />
<asp:Parameter Name="model" Type="String" />
<asp:Parameter Name="serial" Type="String" />
<asp:Parameter Name="owner" Type="String" />
<asp:Parameter Name="name" Type="String" />
<asp:Parameter Name="id" Type="String" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="make" Type="String" />
<asp:Parameter Name="model" Type="String" />
<asp:Parameter Name="serial" Type="String" />
<asp:Parameter Name="owner" Type="String" />
<asp:Parameter Name="name" Type="String" />
<asp:Parameter Name="equipmenttype" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
</td>
</tr>
</table>
<br />
<asp:Label ID="ErrorMessageLabel" EnableViewState="false" runat="server" />
</form>
</body>
</html>
ASKER
Not sure exactly where I put this.
You must provides sammy's code in
Protected Sub DropDownList1_DataBound(By Val sender As Object, ByVal e As System.EventArgs) Handles DropDownList.DataBound
Dropdownlist1.Items.Insert (0, New ListItem("Please Select a Value", "0"))
End Sub
Protected Sub DropDownList1_DataBound(By
Dropdownlist1.Items.Insert
End Sub
you can do it either like kGenius pointed or you can use your page load to test
if not isPostback then
me.Dropdownlist1.items.ins ert(0,New ListItem("Please Select a value","0"))
End if
this way whenever you browse the page you will see "Please Select a value" until you actually select then your selected item will show instead
HTH
if not isPostback then
me.Dropdownlist1.items.ins
End if
this way whenever you browse the page you will see "Please Select a value" until you actually select then your selected item will show instead
HTH
ASKER
I am sure I put this in the wrong spot . No error but no item in the dropdown.
Protected Sub DropDownList1_SelectedInde xChanged(B yVal sender As Object, ByVal e As EventArgs)
DetailsView1.ChangeMode(De tailsViewM ode.ReadOn ly)
If Not IsPostBack Then
DropDownList1.Items.Insert (0, New ListItem("Please Select a value", "0"))
End If
End Sub
Protected Sub DropDownList1_SelectedInde
DetailsView1.ChangeMode(De
If Not IsPostBack Then
DropDownList1.Items.Insert
End If
End Sub
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
When placing it in SelectedIndexChanged it want to add the listitem only when an item in your list has been selected !
By selecting it, a postback occurs. In that manner no item will be added when you check "If Not Page.IsPostBack", hence it is posted back to select ...
HTH is very correct. Accept his post !
By selecting it, a postback occurs. In that manner no item will be added when you check "If Not Page.IsPostBack", hence it is posted back to select ...
HTH is very correct. Accept his post !
ASKER
Thanks for your help !! :) something so simple. What a difference from classic asp. I am glad we are making the change over to ASP.NET.
Thanks again.
Thanks again.
ASKER
I will be posting another question in relation to the same code. But I wanted to start new to give points appropriately. Will post question link so you can track, and possibly get the (500) points.
ASKER
as for the regex expressions, you can find tons of free regex patterns here http://regexlib.com/ just use a custom regex control whatever you want your data to match.
HTH