0

所以问题是我想限制用户在通过 datagridview 更新时可以插入的内容。我想将该特定字段转换为模板,并使其成为具有有限选项的下拉列表来更新此类字段。问题是,当我使用它运行测试时,它会将字段更新为空。在没有模板字段的情况下,绑定到 datagridview 的 sqldatasource 更新得非常好。

我能够在一张桌子上毫无问题地完成这项工作,但是当我为另一张桌子尝试同样的事情时,它一直在下拉列表中给我一个空值。后者绑定到 SqlDataSource。我检查了gridview和数据源上的代码,它几乎相同。我看不出有什么问题。

这是我的 SqlDataSource 的代码

    <asp:SqlDataSource ID="SqlCoord" runat="server" 
        ConnectionString="<%$ ConnectionStrings:sistema_gestion_calidadConnectionString %>" 
        OldValuesParameterFormatString="original_{0}"
        SelectCommand="SELECT profesor.nombre + ' ' + profesor.apellidos AS Expr1, materia.nombre_materia, coordinadores.id_coordinador, coordinadores.id_materia, coordinadores.id_profesor FROM coordinadores INNER JOIN materia ON coordinadores.id_materia = materia.id_materia INNER JOIN profesor ON coordinadores.id_profesor = profesor.id_profesor"             
        UpdateCommand="UPDATE coordinadores SET id_materia = @id_materia, id_profesor = @id_profesor FROM coordinadores INNER JOIN profesor ON coordinadores.id_profesor = profesor.id_profesor INNER JOIN materia ON coordinadores.id_materia = materia.id_materia WHERE (coordinadores.id_coordinador = @original_id_coordinador)">
        <UpdateParameters>
            <asp:Parameter Name="id_materia" />
            <asp:Parameter Name="id_profesor" />
            <asp:Parameter Name="original_id_coordinador" />
        </UpdateParameters>
    </asp:SqlDataSource>

这是我的 DataGridview

    <asp:GridView ID="GridView2" runat="server" AllowPaging="True" 
        AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="id_coordinador" 
        DataSourceID="SqlCoord" CellPadding="4" ForeColor="#333333" 
        GridLines="None">
        <AlternatingRowStyle BackColor="White" />
        <Columns>
            <asp:CommandField ShowEditButton="True" />
            <asp:TemplateField HeaderText="Profesor" SortExpression="Profesor">
                <EditItemTemplate>
                    <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="SqlProfs" 
                        DataTextField="Expr1" DataValueField="id_profesor">
                    </asp:DropDownList>
                    <asp:SqlDataSource ID="SqlProfs" runat="server" 
                        ConnectionString="<%$ ConnectionStrings:sistema_gestion_calidadConnectionString %>" 
                        SelectCommand="SELECT id_profesor, nombre + ' ' + apellidos AS Expr1 FROM profesor">
                    </asp:SqlDataSource>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("Expr1") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="nombre_materia" SortExpression="nombre_materia">
                <EditItemTemplate>
                    <asp:DropDownList ID="DropDownList3" runat="server" DataSourceID="SqlMats" 
                        DataTextField="nombre_materia" DataValueField="id_materia">
                    </asp:DropDownList>
                    <asp:SqlDataSource ID="SqlMats" runat="server" 
                        ConnectionString="<%$ ConnectionStrings:sistema_gestion_calidadConnectionString %>" 
                        SelectCommand="SELECT [id_materia], [nombre_materia] FROM [materia]">
                    </asp:SqlDataSource>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label2" runat="server" Text='<%# Bind("nombre_materia") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="id_coordinador" HeaderText="id_coordinador" ReadOnly="True" 
                SortExpression="id_coordinador" InsertVisible="False" Visible="False" />
            <asp:BoundField DataField="id_materia" HeaderText="id_materia" 
                SortExpression="id_materia" Visible="False" />
            <asp:BoundField DataField="id_profesor" HeaderText="id_profesor" 
                SortExpression="id_profesor" Visible="False" />
        </Columns>
        <EditRowStyle BackColor="#7C6F57" />
        <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#E3EAEB" />
        <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#F8FAFA" />
        <SortedAscendingHeaderStyle BackColor="#246B61" />
        <SortedDescendingCellStyle BackColor="#D4DFE1" />
        <SortedDescendingHeaderStyle BackColor="#15524A" />
    </asp:GridView>
4

0 回答 0