我有一个gridview,其中一列用于显示下拉列表。我的设置与我在网上看过的很多例子完全相同,但下拉列表没有出现。
这是我的gridview的asp:
<asp:GridView id="gvDetails" OnPreRender="DrawDetails" AutoGenerateColumns="false" OnRowDataBound="gvDetails_RowDataBound" width="100%" runat="server">
<columns>
<asp:BoundField
HeaderText="Description"
ShowHeader="true"
DataField="Description">
<itemStyle width="20%"/>
</asp:BoundField>
...
<asp:TemplateField
HeaderText="Status"
ShowHeader="true"
>
<ItemStyle width="16%"/>
<ItemTemplate >
<asp:DropDownList
id="ddlStatus"
Style="width:100%"
runat="server"
>
<asp:ListItem value="1">Closed</asp:ListItem>
<asp:ListItem value="2">Open</asp:ListItem>
<asp:ListItem value="3">Approved</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</columns>
我不确定您是否需要查看与gridview相关的代码(OnPreRender和RowDataBound)? 让我知道,如果你这样做我会编辑。它没有做任何与众不同的事情。
为什么这个下拉列表没有显示?
编辑:我在gridview的RowDataBound事件中添加了一些代码,如果可以找到控件,则输出到我的日志。它可以找到控件正常,只是下拉列表没有出现。
编辑2:根据要求,这是RowDataBound事件:
protected void gvDetail_RowDataBound(Object sender, GridViewRowEventArgs e)
{
GridViewRow gvr = e.Row;
GridView gv = (GridView)sender;
DataTable dt = (DataTable)gv.DataSource;
int col=0;
switch(gvr.RowType)
{
case DataControlRowType.DataRow:
col=0;
foreach(DataControlFieldCell cell in gvr.Cells)
{
switch(col)
{
case 0:
cell.CssClass += " purpleBG center"; break;
case 5:
cell.CssClass += " operatorEntryBG center"; break;
default:
cell.CssClass += " tableCell"; break;
}
++col;
}
break;
}
}