Drop Down List in a Details View Update

Hi I am new to asp.net and visual web developer and was wondering if somebody could give me some help.

I have a details view with an update and insert facility.
When the update button is clicked textboxes appear, for the user to enter data into. Instead of having textboxes for all fields I would like a number of fields to appear as drop down lists that are populated from a database.
How easy is this to do?
I would like the value in the field used in the dropdown to be the value initially selected in the drop down list box. Additionally, is it possible to use the required field validator on these fields?

I would be really greatful for an help you can offer.

Please see the code for my page below
Thanks Mark

<%@PageLanguage="VB"MasterPageFile="~/MasterPage.master"Title="Untitled Page" %>

<asp:ContentID="Content1"ContentPlaceHolderID="ContentPlaceHolder1"Runat="Server">

<strong>

Select A Practice</strong>

<asp:DropDownListID="DDLPRactice"runat="server"Font-Bold="True"AutoPostBack="True"DataSourceID="SqlDataSource1"DataTextField="PracticeName"DataValueField="PracticeSiteID">

</asp:DropDownList><asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString="<%$ ConnectionStrings:SmartCardsConnectionString %>"

SelectCommand="SELECT [PracticeSiteID], [PracticeName] FROM [PracticeSites] ORDER BY [PracticeName]">

</asp:SqlDataSource>

<br/>

<br/>

<br/>

<asp:GridViewID="GridView1"runat="server"AllowSorting="True"AutoGenerateColumns="False"

DataSourceID="SqlDataSource2"Width="100%"DataKeyNames="PersonID">

<Columns>

<asp:CommandFieldShowSelectButton="True"/>

<asp:BoundFieldDataField="FirstName"HeaderText="First Name"SortExpression="FirstName">

<HeaderStyleHorizontalAlign="Left"/>

</asp:BoundField>

<asp:BoundFieldDataField="Surname"HeaderText="Surname"SortExpression="Surname">

<HeaderStyleHorizontalAlign="Left"/>

</asp:BoundField>

<asp:BoundFieldDataField="JobTitle"HeaderText="Job Title"SortExpression="JobTitle">

<HeaderStyleHorizontalAlign="Left"/>

</asp:BoundField>

</Columns>

<SelectedRowStyleBackColor="Transparent"/>

<HeaderStyleHeight="30px"HorizontalAlign="Left"VerticalAlign="Bottom"/>

<AlternatingRowStyleBackColor="Gainsboro"/>

</asp:GridView>

<asp:SqlDataSourceID="SqlDataSource2"runat="server"ConflictDetection="CompareAllValues"

ConnectionString="<%$ ConnectionStrings:SmartCardsConnectionString %>"DeleteCommand="DELETE FROM [PersonTable] WHERE [PersonID] = @original_PersonID AND [FirstName] = @original_FirstName AND [Surname] = @original_Surname AND [JobTitle] = @original_JobTitle AND [Role] = @original_Role AND [BusinessFunction] = @original_BusinessFunction AND [CardCutDate] = @original_CardCutDate AND [CardCutBy] = @original_CardCutBy"

InsertCommand="INSERT INTO [PersonTable] ([FirstName], [Surname], [JobTitle], [Role], [BusinessFunction], [CardCutDate], [CardCutBy]) VALUES (@FirstName, @Surname, @JobTitle, @Role, @BusinessFunction, @CardCutDate, @CardCutBy)"

OldValuesParameterFormatString="original_{0}"SelectCommand="SELECT [PersonID], [FirstName], [Surname], [JobTitle], [Role], [BusinessFunction], [CardCutDate], [CardCutBy] FROM [PersonTable] WHERE ([PracticeSiteID] = @PracticeSiteID)"

UpdateCommand="UPDATE [PersonTable] SET [FirstName] = @FirstName, [Surname] = @Surname, [JobTitle] = @JobTitle, [Role] = @Role, [BusinessFunction] = @BusinessFunction, [CardCutDate] = @CardCutDate, [CardCutBy] = @CardCutBy WHERE [PersonID] = @original_PersonID AND [FirstName] = @original_FirstName AND [Surname] = @original_Surname AND [JobTitle] = @original_JobTitle AND [Role] = @original_Role AND [BusinessFunction] = @original_BusinessFunction AND [CardCutDate] = @original_CardCutDate AND [CardCutBy] = @original_CardCutBy">

<DeleteParameters>

<asp:ParameterName="original_PersonID"Type="Int32"/>

<asp:ParameterName="original_FirstName"Type="String"/>

<asp:ParameterName="original_Surname"Type="String"/>

<asp:ParameterName="original_JobTitle"Type="String"/>

<asp:ParameterName="original_Role"Type="String"/>

<asp:ParameterName="original_BusinessFunction"Type="String"/>

<asp:ParameterName="original_CardCutDate"Type="DateTime"/>

<asp:ParameterName="original_CardCutBy"Type="String"/>

</DeleteParameters>

<UpdateParameters>

<asp:ParameterName="FirstName"Type="String"/>

<asp:ParameterName="Surname"Type="String"/>

<asp:ParameterName="JobTitle"Type="String"/>

<asp:ParameterName="Role"Type="String"/>

<asp:ParameterName="BusinessFunction"Type="String"/>

<asp:ParameterName="CardCutDate"Type="DateTime"/>

<asp:ParameterName="CardCutBy"Type="String"/>

<asp:ParameterName="original_PersonID"Type="Int32"/>

<asp:ParameterName="original_FirstName"Type="String"/>

<asp:ParameterName="original_Surname"Type="String"/>

<asp:ParameterName="original_JobTitle"Type="String"/>

<asp:ParameterName="original_Role"Type="String"/>

<asp:ParameterName="original_BusinessFunction"Type="String"/>

<asp:ParameterName="original_CardCutDate"Type="DateTime"/>

<asp:ParameterName="original_CardCutBy"Type="String"/>

</UpdateParameters>

<SelectParameters>

<asp:ControlParameterControlID="DDLPRactice"Name="PracticeSiteID"PropertyName="SelectedValue"

Type="Int32"/>

</SelectParameters>

<InsertParameters>

<asp:ParameterName="FirstName"Type="String"/>

<asp:ParameterName="Surname"Type="String"/>

<asp:ParameterName="JobTitle"Type="String"/>

<asp:ParameterName="Role"Type="String"/>

<asp:ParameterName="BusinessFunction"Type="String"/>

<asp:ParameterName="CardCutDate"Type="DateTime"/>

<asp:ParameterName="CardCutBy"Type="String"/>

</InsertParameters>

</asp:SqlDataSource>

&nbsp;&nbsp;<br/>

<asp:DetailsViewID="DetailsView1"runat="server"AutoGenerateRows="False"DataKeyNames="PersonID"

DataSourceID="SqlDataSource3"Height="50px"Width="100%">

<EditRowStyleBackColor="#E0E0E0"/>

<RowStyleBackColor="#E0E0E0"BorderColor="Gray"BorderStyle="Solid"/>

<Fields>

<asp:BoundFieldDataField="PersonID"HeaderText="Person ID"InsertVisible="False"

ReadOnly="True"SortExpression="PersonID"/>

<asp:BoundFieldDataField="FirstName"HeaderText="First Name"SortExpression="FirstName"/>

<asp:BoundFieldDataField="Surname"HeaderText="Surname"SortExpression="Surname"/>

<asp:BoundFieldDataField="PracticeSiteID"HeaderText="Practice Site ID"SortExpression="PracticeSiteID"/>

<asp:BoundFieldDataField="JobTitle"HeaderText="Job Title"SortExpression="JobTitle"/>

<asp:BoundFieldDataField="Role"HeaderText="Role"SortExpression="Role"/>

<asp:BoundFieldDataField="BusinessFunction"HeaderText="Business Function"SortExpression="BusinessFunction"/>

<asp:BoundFieldDataField="CardCutDate"HeaderText="Card Cut Date"SortExpression="CardCutDate"/>

<asp:BoundFieldDataField="RecordCreated"HeaderText="Record Created"InsertVisible="False"

SortExpression="RecordCreated"/>

<asp:BoundFieldDataField="CardCutBy"HeaderText="Card Cut By"SortExpression="CardCutBy"/>

<asp:CommandFieldShowDeleteButton="True"ShowEditButton="True"/>

</Fields>

<FieldHeaderStyleBackColor="#E0E0E0"BorderColor="Transparent"Font-Bold="True"/>

<InsertRowStyleBackColor="#E0E0E0"/>

</asp:DetailsView>

<asp:SqlDataSourceID="SqlDataSource3"runat="server"ConflictDetection="CompareAllValues"

ConnectionString="<%$ ConnectionStrings:SmartCardsConnectionString %>"DeleteCommand="DELETE FROM [PersonTable] WHERE [PersonID] = @original_PersonID AND [FirstName] = @original_FirstName AND [Surname] = @original_Surname AND [PracticeSiteID] = @original_PracticeSiteID AND [JobTitle] = @original_JobTitle AND [Role] = @original_Role AND [BusinessFunction] = @original_BusinessFunction AND [CardCutDate] = @original_CardCutDate AND [RecordCreated] = @original_RecordCreated AND [CardCutBy] = @original_CardCutBy"

InsertCommand="INSERT INTO [PersonTable] ([FirstName], [Surname], [PracticeSiteID], [JobTitle], [Role], [BusinessFunction], [CardCutDate], [RecordCreated], [CardCutBy]) VALUES (@FirstName, @Surname, @PracticeSiteID, @JobTitle, @Role, @BusinessFunction, @CardCutDate, @RecordCreated, @CardCutBy)"

OldValuesParameterFormatString="original_{0}"SelectCommand="SELECT [PersonID], [FirstName], [Surname], [PracticeSiteID], [JobTitle], [Role], [BusinessFunction], [CardCutDate], [RecordCreated], [CardCutBy] FROM [PersonTable] WHERE ([PersonID] = @PersonID)"

UpdateCommand="UPDATE [PersonTable] SET [FirstName] = @FirstName, [Surname] = @Surname, [PracticeSiteID] = @PracticeSiteID, [JobTitle] = @JobTitle, [Role] = @Role, [BusinessFunction] = @BusinessFunction, [CardCutDate] = @CardCutDate, [RecordCreated] = @RecordCreated, [CardCutBy] = @CardCutBy WHERE [PersonID] = @original_PersonID AND [FirstName] = @original_FirstName AND [Surname] = @original_Surname AND [PracticeSiteID] = @original_PracticeSiteID AND [JobTitle] = @original_JobTitle AND [Role] = @original_Role AND [BusinessFunction] = @original_BusinessFunction AND [CardCutDate] = @original_CardCutDate AND [RecordCreated] = @original_RecordCreated AND [CardCutBy] = @original_CardCutBy">

<DeleteParameters>

<asp:ParameterName="original_PersonID"Type="Int32"/>

<asp:ParameterName="original_FirstName"Type="String"/>

<asp:ParameterName="original_Surname"Type="String"/>

<asp:ParameterName="original_PracticeSiteID"Type="Int32"/>

<asp:ParameterName="original_JobTitle"Type="String"/>

<asp:ParameterName="original_Role"Type="String"/>

<asp:ParameterName="original_BusinessFunction"Type="String"/>

<asp:ParameterName="original_CardCutDate"Type="DateTime"/>

<asp:ParameterName="original_RecordCreated"Type="DateTime"/>

<asp:ParameterName="original_CardCutBy"Type="String"/>

</DeleteParameters>

<UpdateParameters>

<asp:ParameterName="FirstName"Type="String"/>

<asp:ParameterName="Surname"Type="String"/>

<asp:ParameterName="PracticeSiteID"Type="Int32"/>

<asp:ParameterName="JobTitle"Type="String"/>

<asp:ParameterName="Role"Type="String"/>

<asp:ParameterName="BusinessFunction"Type="String"/>

<asp:ParameterName="CardCutDate"Type="DateTime"/>

<asp:ParameterName="RecordCreated"Type="DateTime"/>

<asp:ParameterName="CardCutBy"Type="String"/>

<asp:ParameterName="original_PersonID"Type="Int32"/>

<asp:ParameterName="original_FirstName"Type="String"/>

<asp:ParameterName="original_Surname"Type="String"/>

<asp:ParameterName="original_PracticeSiteID"Type="Int32"/>

<asp:ParameterName="original_JobTitle"Type="String"/>

<asp:ParameterName="original_Role"Type="String"/>

<asp:ParameterName="original_BusinessFunction"Type="String"/>

<asp:ParameterName="original_CardCutDate"Type="DateTime"/>

<asp:ParameterName="original_RecordCreated"Type="DateTime"/>

<asp:ParameterName="original_CardCutBy"Type="String"/>

</UpdateParameters>

<SelectParameters>

<asp:ControlParameterControlID="GridView1"Name="PersonID"PropertyName="SelectedValue"

Type="Int32"/>

</SelectParameters>

<InsertParameters>

<asp:ParameterName="FirstName"Type="String"/>

<asp:ParameterName="Surname"Type="String"/>

<asp:ParameterName="PracticeSiteID"Type="Int32"/>

<asp:ParameterName="JobTitle"Type="String"/>

<asp:ParameterName="Role"Type="String"/>

<asp:ParameterName="BusinessFunction"Type="String"/>

<asp:ParameterName="CardCutDate"Type="DateTime"/>

<asp:ParameterName="RecordCreated"Type="DateTime"/>

<asp:ParameterName="CardCutBy"Type="String"/>

</InsertParameters>

</asp:SqlDataSource>

&nbsp;&nbsp;<br/>

</asp:Content>

[66959 byte] By [Marcuscoker] at [2007-12-17]
# 1

I also Have this problem in both GridView and DetailsView. VWD says that, if you want to insert or edit from a GridView or DetailsView, you must use a single table in your query.

Virtually all my tables have "look up fields" so may of the fields are foreign key numbers which are meaningless to a user creating a new record or editing. The Help file and all the books I have read say nothing about this at all. This seems to be a very serious omission.

How on earth can you display to a user in a gridview or detailsview a different field from a different table?

Thanks,

Martin D. Fairbairn

MartinD.Fairbairn at 2007-9-8 > top of Msdn Tech,Visual Studio Express Editions,Installing and Registering Visual Studio 2005 Express Editions...
# 2

Hi!

There is a data forum on teh ASP.NET forums that will help you out a lot here, I'd suggest starting there as a place to look. I'm not 100% sure of how to do this off hand, so I don't want to point you in the wrong direction.

The best place for asking ASP.NET questions is on the ASP.NET community site, and in the forums there. Check out http://www.asp.net/welcome.aspx?tabindex=1&tabid=39.

HTH,

PEte

PeteL-MSFT at 2007-9-8 > top of Msdn Tech,Visual Studio Express Editions,Installing and Registering Visual Studio 2005 Express Editions...