【发布时间】:2021-08-21 17:25:57
【问题描述】:
我有一个 ASP.NET Web 应用程序,它连接到 SQL 数据库并在一个页面上填充多个网格视图,显示不同的数据集。其中两列是下拉列表,因为我希望用户能够选择不同的(类别和状态)。我可以让数据显示的唯一方法是,如果我像这样在 gridview 本身中硬编码类别和状态名称:
<asp:TemplateField SortExpression="rank" Visible="true" HeaderText="Area" >
<HeaderStyle HorizontalAlign="Left" CssClass="col_med" />
<ItemTemplate>
<asp:DropDownList id="ddlRank" AutoPostBack="True" OnSelectedIndexChanged="Rank_Change" runat="server" CssClass="col_med"
SelectedValue='<%# Eval("rank") %>' TabIndex='<%# TabIndex %>'>
<asp:ListItem Value=""> - </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:DropDownList>
</ItemTemplate>
</asp:TemplateField>
我想做的是从数据库中提取状态并使用
在我的gridview中显示它们OnRowDataBound="OnRowDataBound"
将数据库中的数据拉入下拉列表,如下所示:
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//Find the DropDownList in the Row
DataTable ddLine = DAL.listLine();
ddLine = resort(ddLine, "line", "desc");
//Find the DropDownList in the Row
DataTable ddlArea = DAL.listArea();
ddlArea = resort(ddlArea, "area", "desc");
}
}
但是,当我尝试实现 OnRowDataBound 并像这样更改我的 gridview 时,这不起作用,并且根本没有数据显示在我的 gridview 中:
<asp:BoundField HeaderText="Area" DataField="rank" />
<asp:TemplateField HeaderText = "Area">
<ItemTemplate>
<asp:Label ID="lblArea" runat="server" Text='<%# Eval("rank") %>' Visible = "false" />
<asp:DropDownList ID="ddlArea" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
任何人都可以建议上述方法是否是我的方案的最佳做法,如果是,代码可能有什么问题导致我的数据不显示?
【问题讨论】: