更新值从DDL中拾取的DetailView

问题描述:

(我觉得它应该做如图我回答以下的方式。
我编辑我的问题,并删除我最初把这里的代码,这是一个烂摊子,只留下定义)。更新值从DDL中拾取的DetailView

VS7中的Win7,ASP4.5,empty_web_app与C#。在一个非常简单的项目访问两个表重建:

1表 “学生

  • student_id数据
  • student_name
  • 小号tudent_course_ID(被Forign键)

第2表 “课程

  • COURSE_ID
  • 课程名称

在我的网页我有DetailView1显示学生谁是student_id数据txbStudent_ID拍摄的细节。
DetailView1有编辑删除和新建。
在UPDATE或INSERT模式下,我需要在下拉列表中显示course_name(而不是课程ID),并相应地更新/插入。

没有代码背后。

我的回答也适用于GRIDVIEW。

Gadi

我错了他们的方式我编码了我的aspx。
所以在这里是做正确的方式,为未来的初学者像我现在...
(与https://msdn.microsoft.com/en-us/library/ms178294(v=vs.140).aspx帮助)

 <asp:Label ID="Label1" runat="server" Text="Student_ID"></asp:Label> 
    <asp:TextBox ID="txbStudent_ID" runat="server"></asp:TextBox> 
    <br /> 
    <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataKeyNames="student_ID" DataSourceID="SqlDataSource1" Height="50px" Width="125px"> 
     <Fields> 
      <asp:BoundField DataField="student_ID" HeaderText="student_ID" InsertVisible="False" ReadOnly="True" SortExpression="student_ID" /> 
      <asp:BoundField DataField="student_name" HeaderText="student_name" SortExpression="student_name" /> 
      <asp:TemplateField HeaderText="student_course_ID" SortExpression="student_course_ID"> 
       <EditItemTemplate> 
        <asp:DropDownList 
         ID="DropDownList1" 
         runat="server" 
         DataSourceID="SqlDataSource2" 
         DataTextField="course_name" 
         DataValueField="course_ID" 
         SelectedValue='<%# Bind("student_course_ID") %>'> 
        </asp:DropDownList> 
       </EditItemTemplate> 
       <InsertItemTemplate> 
        <asp:DropDownList 
         ID="DropDownList2" 
         runat="server" 
         DataSourceID="SqlDataSource2" 
         DataTextField="course_name" 
         DataValueField="course_ID" 
         SelectedValue='<%# Bind("student_course_ID") %>'> 
        </asp:DropDownList> 
       </InsertItemTemplate> 
       <ItemTemplate> 
        <asp:Label 
         ID="Label1" 
         runat="server" 
         Text='<%# Bind("student_course_ID") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:CommandField ShowEditButton="True" ShowInsertButton="True" ShowDeleteButton="True" /> 
     </Fields> 
    </asp:DetailsView> 

    <asp:SqlDataSource 
     ID="SqlDataSource1" 
     runat="server" 
     ConnectionString="<%$ ConnectionStrings:Course_Student_Connection %>" 
     InsertCommand="INSERT INTO [Students] ([student_name], [student_course_ID]) VALUES (@student_name, @student_course_ID)" 
     SelectCommand="SELECT * FROM [Students] WHERE ([student_ID] = @student_ID)" 
     UpdateCommand="UPDATE [Students] SET [student_name] = @student_name, [student_course_ID] = @student_course_ID WHERE [student_ID] = @student_ID" 
     DeleteCommand="DELETE FROM [Students] WHERE [student_ID] = @student_ID"> 
     <DeleteParameters> 
      <asp:Parameter Name="student_ID" Type="Int32" /> 
     </DeleteParameters> 
     <InsertParameters> 
      <asp:Parameter Name="student_name" Type="String" /> 
      <asp:Parameter Name="student_course_ID" Type="Int32" /> 
     </InsertParameters> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="txbStudent_ID" Name="student_ID" PropertyName="Text" Type="Int32" /> 
     </SelectParameters> 
     <UpdateParameters> 
      <asp:Parameter Name="student_name" Type="String" /> 
      <asp:Parameter Name="student_course_ID" Type="Int32" /> 
      <asp:Parameter Name="student_ID" Type="Int32" /> 
     </UpdateParameters> 
    </asp:SqlDataSource> 

    <asp:SqlDataSource 
     ID="SqlDataSource2" 
     runat="server" 
     ConnectionString="<%$ ConnectionStrings:Course_Student_Connection %>" 
     SelectCommand="SELECT [course_ID], [course_name] FROM [Courses]"> 
    </asp:SqlDataSource> 

我希望它会节省一些时间给别人。
*是最棒的,迄今为止最好的Q &网站上的网站!
Gadi。