无法使用下拉列表设置和获取值

时间:2015-09-24 08:35:01

标签: asp.net .net gridview webforms user-controls

此下拉列表位于网格视图中:

    <asp:TemplateField HeaderText="Test">
        <ItemTemplate>
            <asp:DropDownList ID="Hello" runat="server" SelectedValue='<%# Eval("beta") %>'>
                <asp:ListItem Value="" Text="-">-</asp:ListItem>
                <asp:ListItem Value="0" Text="0">0</asp:ListItem>
                <asp:ListItem Value="1" Text="1">1</asp:ListItem>
            </asp:DropDownList>
        </ItemTemplate>
    </asp:TemplateField>

每次必须加载包含此gridview的页面时,我都会遇到异常:

{"'beta' has a SelectedValue which is invalid because it does not exist in the list of items.\r\nParameter name: value"}

beta的值为null,但

<asp:ListItem Value="null" Text="null">null</asp:ListItem>

无效... 注意 beta来自数据库,作为下一个可能的值:null,0或1.还尝试从另一个下拉列表中获取值但不起作用,我试过这个:

GridViewRow row = GridView1.Rows[i]; //this is inside a for loop
var ddl = row.Cells[8].Controls[0] as DropDownList;
string test= ddl.SelectedIndex;

调试时,我总是将ddl视为null。

所以问题是:

1。如何使用3个值加载下拉列表,其中一个值为空?

2. 如何在不使用onchange或其他任何事件的情况下阅读所选的下拉列值,例如:

  CheckBox chk = row.Cells[0].Controls[0] as CheckBox;
  bool isChecked = chk.Checked;

2 个答案:

答案 0 :(得分:0)

回答你的问题:

  1. 您无法将null设置为ListItem的值,因为null不是字符串文字。 null表示缺少值。 null本身就是&#34;而不是价值&#34;。因此,您需要在代码中处理它:

    drpList.SelectedValue = dbObj.FieldValue ?? "(n/a)";

  2. 我不确定你在这里问的是什么。我建议使用FindControl而不是使用索引来访问您的控件。

答案 1 :(得分:0)

关于你的问题,请参阅下面的文章,了解asp.net中的下拉列表

http://www.laptrinhdotnet.com/2015/07/su-dung-control-dropdownlist-trong.html