<asp:GridView ID="gvTeacher" runat="server" AutoGenerateColumns="False" DataKeyNames="TeacherID"
        DataSourceID="SqlDataSource1" CellPadding="3" />
        <Columns>
            <asp:BoundField DataField="TeacherID" ReadOnly="true" HeaderText="教师编号">
            </asp:BoundField>
            <asp:BoundField DataField="TeacherName" HeaderText="姓名" ItemStyle-Width="200" >
            </asp:BoundField>            
            <asp:TemplateField HeaderText="工作时间">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("WorkFromDate") %>' onClick="WdatePicker()"></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <%# Eval("WorkFromDate", "{0:yyyy-MM-dd}") %>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="班主任年限">
                <EditItemTemplate>
                    <asp:DropDownList ID ="ddlAdviserYears" runat="server" SelectedValue='<%#Bind("AdviserYears") %>' DataValueField='<%#Bind("AdviserYears")%>'>
                        <asp:ListItem Value="0">0</asp:ListItem>
                        <asp:ListItem Value="1">1</asp:ListItem>
                        <asp:ListItem Value="2">2</asp:ListItem>
                        <asp:ListItem Value="3">3</asp:ListItem>
                        <asp:ListItem Value="4">4</asp:ListItem>
                        <asp:ListItem Value="5">5</asp:ListItem>
                        <asp:ListItem Value="6">6</asp:ListItem>
                        <asp:ListItem Value="7">7</asp:ListItem>
                        <asp:ListItem Value="8">8</asp:ListItem>
                        <asp:ListItem Value="9">9</asp:ListItem>
                        <asp:ListItem Value="10">10</asp:ListItem>
                        <asp:ListItem Value="11">11</asp:ListItem>
                        <asp:ListItem Value="12">12</asp:ListItem>
                        <asp:ListItem Value="13">13</asp:ListItem>
                        <asp:ListItem Value="14">14</asp:ListItem>
                        <asp:ListItem Value="15">15</asp:ListItem>
                        <asp:ListItem Value="16">16</asp:ListItem>
                        <asp:ListItem Value="17">17</asp:ListItem>
                        <asp:ListItem Value="18">18</asp:ListItem>
                        <asp:ListItem Value="19">19</asp:ListItem>
                        <asp:ListItem Value="20">20</asp:ListItem> 
                    </asp:DropDownList>
                </EditItemTemplate>
                <ItemTemplate>
                    <%# Eval("AdviserYears").ToString() %>
                </ItemTemplate>
            </asp:TemplateField>  
            <asp:CommandField ShowEditButton="True" HeaderText="修改" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:DataConnectionString %>"         
        SelectCommand="SELECT [TeacherID], [TeacherName], [WorkFromDate], [AdviserYears] FROM [Teacher]"   
        UpdateCommand="UPDATE [Teacher] SET [TeacherName] = @TeacherName, [WorkFromDate] = @WorkFromDate, [AdviserYears] = @AdviserYears WHERE [TeacherID] = @original_TeacherID">
        <UpdateParameters>
            <asp:Parameter Name="TeacherName" Type="String" />
            <asp:Parameter Name="WorkFromDate" DbType="DateTime" />
            <asp:Parameter Name="AdviserYears" Type="Int32"/>
            <asp:Parameter Name="original_TeacherID" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>
dropdownlist选择数据更新时变成null,其它数据正常更新,请大家帮查错,谢了。我已经查了一天的资料了,还是没有找到类似的代码

解决方案 »

  1.   

     DataValueField='<%#Bind("AdviserYears")%>'去掉
      

  2.   

    DropDownList不能这样动态绑定:  <asp:DropDownList ID ="ddlAdviserYears" runat="server" SelectedValue='<%#Bind("AdviserYears") %>' DataValueField='<%#Bind("AdviserYears")%>'>
     写法不对解决方案:
    改为
     <asp:DropDownList ID ="ddlAdviserYears" runat="server" >然后gridView的Updating 事件中动态添加参数 SqlDataSource1.UpdateParameters.Add("AdviserYears",取到ddlAdviserYears 然后取到SelectValue);