在一列中具有下拉列表的Gridview不显示所述下拉列表

时间:2013-07-18 09:53:41

标签: c# asp.net gridview

我有一个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;
   }
}

0 个答案:

没有答案