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
<%
@ Page Language="VB" MasterPageFile="~/MasterPage.master" Title="Untitled Page" %><
asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <strong>Select A Practice
</strong> <asp:DropDownList ID="DDLPRactice" runat="server" Font-Bold="True" AutoPostBack="True" DataSourceID="SqlDataSource1" DataTextField="PracticeName" DataValueField="PracticeSiteID"> </asp:DropDownList><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SmartCardsConnectionString %>" SelectCommand="SELECT [PracticeSiteID], [PracticeName] FROM [PracticeSites] ORDER BY [PracticeName]"> </asp:SqlDataSource> <br /> <br /> <br /> <asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="SqlDataSource2" Width="100%" DataKeyNames="PersonID"> <Columns> <asp:CommandField ShowSelectButton="True" /> <asp:BoundField DataField="FirstName" HeaderText="First Name" SortExpression="FirstName"> <HeaderStyle HorizontalAlign="Left" /> </asp:BoundField> <asp:BoundField DataField="Surname" HeaderText="Surname" SortExpression="Surname"> <HeaderStyle HorizontalAlign="Left" /> </asp:BoundField> <asp:BoundField DataField="JobTitle" HeaderText="Job Title" SortExpression="JobTitle"> <HeaderStyle HorizontalAlign="Left" /> </asp:BoundField> </Columns> <SelectedRowStyle BackColor="Transparent" /> <HeaderStyle Height="30px" HorizontalAlign="Left" VerticalAlign="Bottom" /> <AlternatingRowStyle BackColor="Gainsboro" /> </asp:GridView> <asp:SqlDataSource ID="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:Parameter Name="original_PersonID" Type="Int32" /> <asp:Parameter Name="original_FirstName" Type="String" /> <asp:Parameter Name="original_Surname" Type="String" /> <asp:Parameter Name="original_JobTitle" Type="String" /> <asp:Parameter Name="original_Role" Type="String" /> <asp:Parameter Name="original_BusinessFunction" Type="String" /> <asp:Parameter Name="original_CardCutDate" Type="DateTime" /> <asp:Parameter Name="original_CardCutBy" Type="String" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="FirstName" Type="String" /> <asp:Parameter Name="Surname" Type="String" /> <asp:Parameter Name="JobTitle" Type="String" /> <asp:Parameter Name="Role" Type="String" /> <asp:Parameter Name="BusinessFunction" Type="String" /> <asp:Parameter Name="CardCutDate" Type="DateTime" /> <asp:Parameter Name="CardCutBy" Type="String" /> <asp:Parameter Name="original_PersonID" Type="Int32" /> <asp:Parameter Name="original_FirstName" Type="String" /> <asp:Parameter Name="original_Surname" Type="String" /> <asp:Parameter Name="original_JobTitle" Type="String" /> <asp:Parameter Name="original_Role" Type="String" /> <asp:Parameter Name="original_BusinessFunction" Type="String" /> <asp:Parameter Name="original_CardCutDate" Type="DateTime" /> <asp:Parameter Name="original_CardCutBy" Type="String" /> </UpdateParameters> <SelectParameters> <asp:ControlParameter ControlID="DDLPRactice" Name="PracticeSiteID" PropertyName="SelectedValue" Type="Int32" /> </SelectParameters> <InsertParameters> <asp:Parameter Name="FirstName" Type="String" /> <asp:Parameter Name="Surname" Type="String" /> <asp:Parameter Name="JobTitle" Type="String" /> <asp:Parameter Name="Role" Type="String" /> <asp:Parameter Name="BusinessFunction" Type="String" /> <asp:Parameter Name="CardCutDate" Type="DateTime" /> <asp:Parameter Name="CardCutBy" Type="String" /> </InsertParameters> </asp:SqlDataSource> <br /> <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataKeyNames="PersonID" DataSourceID="SqlDataSource3" Height="50px" Width="100%"> <EditRowStyle BackColor="#E0E0E0" /> <RowStyle BackColor="#E0E0E0" BorderColor="Gray" BorderStyle="Solid" /> <Fields> <asp:BoundField DataField="PersonID" HeaderText="Person ID" InsertVisible="False" ReadOnly="True" SortExpression="PersonID" /> <asp:BoundField DataField="FirstName" HeaderText="First Name" SortExpression="FirstName" /> <asp:BoundField DataField="Surname" HeaderText="Surname" SortExpression="Surname" /> <asp:BoundField DataField="PracticeSiteID" HeaderText="Practice Site ID" SortExpression="PracticeSiteID" /> <asp:BoundField DataField="JobTitle" HeaderText="Job Title" SortExpression="JobTitle" /> <asp:BoundField DataField="Role" HeaderText="Role" SortExpression="Role" /> <asp:BoundField DataField="BusinessFunction" HeaderText="Business Function" SortExpression="BusinessFunction" /> <asp:BoundField DataField="CardCutDate" HeaderText="Card Cut Date" SortExpression="CardCutDate" /> <asp:BoundField DataField="RecordCreated" HeaderText="Record Created" InsertVisible="False" SortExpression="RecordCreated" /> <asp:BoundField DataField="CardCutBy" HeaderText="Card Cut By" SortExpression="CardCutBy" /> <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" /> </Fields> <FieldHeaderStyle BackColor="#E0E0E0" BorderColor="Transparent" Font-Bold="True" /> <InsertRowStyle BackColor="#E0E0E0" /> </asp:DetailsView> <asp:SqlDataSource ID="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:Parameter Name="original_PersonID" Type="Int32" /> <asp:Parameter Name="original_FirstName" Type="String" /> <asp:Parameter Name="original_Surname" Type="String" /> <asp:Parameter Name="original_PracticeSiteID" Type="Int32" /> <asp:Parameter Name="original_JobTitle" Type="String" /> <asp:Parameter Name="original_Role" Type="String" /> <asp:Parameter Name="original_BusinessFunction" Type="String" /> <asp:Parameter Name="original_CardCutDate" Type="DateTime" /> <asp:Parameter Name="original_RecordCreated" Type="DateTime" /> <asp:Parameter Name="original_CardCutBy" Type="String" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="FirstName" Type="String" /> <asp:Parameter Name="Surname" Type="String" /> <asp:Parameter Name="PracticeSiteID" Type="Int32" /> <asp:Parameter Name="JobTitle" Type="String" /> <asp:Parameter Name="Role" Type="String" /> <asp:Parameter Name="BusinessFunction" Type="String" /> <asp:Parameter Name="CardCutDate" Type="DateTime" /> <asp:Parameter Name="RecordCreated" Type="DateTime" /> <asp:Parameter Name="CardCutBy" Type="String" /> <asp:Parameter Name="original_PersonID" Type="Int32" /> <asp:Parameter Name="original_FirstName" Type="String" /> <asp:Parameter Name="original_Surname" Type="String" /> <asp:Parameter Name="original_PracticeSiteID" Type="Int32" /> <asp:Parameter Name="original_JobTitle" Type="String" /> <asp:Parameter Name="original_Role" Type="String" /> <asp:Parameter Name="original_BusinessFunction" Type="String" /> <asp:Parameter Name="original_CardCutDate" Type="DateTime" /> <asp:Parameter Name="original_RecordCreated" Type="DateTime" /> <asp:Parameter Name="original_CardCutBy" Type="String" /> </UpdateParameters> <SelectParameters> <asp:ControlParameter ControlID="GridView1" Name="PersonID" PropertyName="SelectedValue" Type="Int32" /> </SelectParameters> <InsertParameters> <asp:Parameter Name="FirstName" Type="String" /> <asp:Parameter Name="Surname" Type="String" /> <asp:Parameter Name="PracticeSiteID" Type="Int32" /> <asp:Parameter Name="JobTitle" Type="String" /> <asp:Parameter Name="Role" Type="String" /> <asp:Parameter Name="BusinessFunction" Type="String" /> <asp:Parameter Name="CardCutDate" Type="DateTime" /> <asp:Parameter Name="RecordCreated" Type="DateTime" /> <asp:Parameter Name="CardCutBy" Type="String" /> </InsertParameters> </asp:SqlDataSource> <br /></
asp:Content>
Drop Down List in a Details View Update
MichaelJosten
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
John Rossitter
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