更新在DetailView中从DDL中选取的值

时间:2015-03-31 09:30:33

标签: asp.net visual-studio drop-down-menu updating detailview

(我发现它应该按照我的答案所示的方式完成。
我正在编辑我的问题并删除我最初放在这里的代码,这很乱,只留下定义。

使用C#在VS2013中使用Win7,ASP4.5,empty_web_app。在访问两个表的非常简单的项目中重新创建:

第一个表格“ 学生

  • student_ID
  • student_name
  • student_course_ID (是Forign Key)

第二个表“ 课程

  • COURSE_ID
  • COURSE_NAME

在我的网页中,我有 DetailView1 ,其中显示 student_ID 的学生的详细信息来自 txbStudent_ID 。<登记/> DetailView1具有“编辑删除”和“新建” 在UPDATE或INSERT模式下,我需要在下拉列表中显示course_name(而不是课程ID)并相应地更新/插入。

没有代码。

我的答案也适用于GRIDVIEW。

迦底

1 个答案:

答案 0 :(得分:0)

我对他的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>

我希望能为别人节省一些时间 Stackoverflow是最好的,也是目前网上最好的Q&amp; A网站!!! 迦底。