dropdownlist错误对象引用未设置为对象的实例

时间:2018-03-12 20:03:50

标签: c# asp.net gridview

我有一个DropDownList,如下所示:

<asp:GridView ID="moduleInfo" runat="server" DataSourceID="currentModules" class="table table-striped table-bordered" AutoGenerateColumns="false"  GridLines="None">
    <Columns>
       <asp:TemplateField HeaderText="module" ItemStyle-Width="30"  >
          <ItemTemplate>
            <asp:DropDownList ID="entryLevel" CssClass="form-control" runat="server">
                <asp:ListItem Text="Level 1" Value="1"></asp:ListItem>
                <asp:ListItem Text="Level 2" Value="2"></asp:ListItem>
                <asp:ListItem Text="Level 3" Value="3"></asp:ListItem>
                <asp:ListItem Text="Level 4" Value="4"></asp:ListItem>
                <asp:ListItem Text="Level 5" Value="5"></asp:ListItem>
          </asp:DropDownList>
        </ItemTemplate>
      </asp:TemplateField>

当我尝试在后面的代码中引用它时,键入entryLevel无法识别,所以我使用下面的代码:

DropDownList ddl = (DropDownList)moduleInfo.FindControl("entryLevel");
string Level = ddl.SelectedValue;

每当我运行网页并选择值时,我都会收到错误:

  

对象引用未设置为对象的实例

任何人都知道我为什么会收到此错误?

1 个答案:

答案 0 :(得分:0)

你缺少Rows GridView类来获得下面一行的确切DropDownList替换:

DropDownList ddl = (DropDownList)moduleInfo.Rows[rowIndex].FindControl("entryLevel");

如果你在RowCommand事件中使用你的代码,那么你可以得到rowIndex,如下所示:

GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer);
int rowIndex = row.RowIndex;