GridView中的ASP.Net DropDownList - Codebehind始终将第一个项目视为已选中

时间:2013-12-08 09:00:36

标签: c# asp.net gridview data-binding drop-down-menu

我正在开发一个ASP.Net应用程序,后面的代码为C#。在aspx页面中,有一个gridview控件。一列包含下拉列表,如下所示:

<asp:GridView ID="gvModulesSem1" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateField HeaderText="Grade" HeaderStyle-HorizontalAlign="Left" HeaderStyle-CssClass="gvModulesTextPadding">
            <ItemStyle Width="120px" CSSClass="gvModulesTextPadding" />
            <ItemTemplate>
                <asp:DropDownList ID="ddlSelectGrade" Text='<%# Eval("Grade")%>' runat="server">
                    <asp:ListItem Value="-1.0">Select Grade</asp:ListItem>
                    <asp:ListItem Value="Distinction">Distinction</asp:ListItem>
                    <asp:ListItem Value="A">A</asp:ListItem>
                    <asp:ListItem Value="B+">B+</asp:ListItem>
                    <asp:ListItem Value="B">B</asp:ListItem>
                    <asp:ListItem Value="C+">C+</asp:ListItem>
                    <asp:ListItem Value="C">C</asp:ListItem>
                    <asp:ListItem Value="D+">D+</asp:ListItem>
                    <asp:ListItem Value="D">D</asp:ListItem>
                    <asp:ListItem Value="P">P</asp:ListItem>
                    <asp:ListItem Value="F">F</asp:ListItem>
                </asp:DropDownList>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

还有一些其他列,所有列都包含标签。但是,为了简单起见,我删除了其他列的代码。

在页面加载中,当Page.IsPostBack为false时,GridView绑定到DataTable(已填充)。这将填充GridView。所有DropDownLists都有第一项,即选择“选择成绩”。

作为用户,我更改了下拉列表中的选定项目。然后单击一个按钮(网格外)。在按钮单击事件过程中,当我尝试读取任何下拉列表中的选定项目时,我发现它始终是第一个项目。

如何更正此问题? 谢谢。

0 个答案:

没有答案