【问题标题】:Cant set and get value using dropdown list无法使用下拉列表设置和获取值
【发布时间】:2015-12-21 19:01:10
【问题描述】:

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

    <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 设为空。

所以问题是:

1.如何加载下拉列表中的三个值,其中一个为空?

2. 如何在不使用 onchange 之类的任何事件或其他任何事件的情况下读取选定的下拉值,例如:

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

【问题讨论】:

  • 第一个问题答案你不能null 代表一个空对象,你在值和文本 null 中提到的任何一个实际上是一个字符串。您可以通过使用可空运算符来克服空值并分配默认值,例如&lt;%# Eval("beta") ?? "1" %&gt;
  • @Suprabhat 是的,但是有没有办法让它为空? 'beta' 字段实际上是 boolean? 所以它可以是:true|false|null
  • 就像我说的那样分配默认值,比如修改你的标记&lt;asp:ListItem Value="" Text="-1"&gt;-&lt;/asp:ListItem&gt; 并使用&lt;%# Eval("beta") ?? "-1" %&gt;
  • @Suprabhat 是的,刚刚尝试过,但仍然是同样的错误 pff
  • 好的,我在之前的评论中得到了它,我在文本字段&lt;asp:ListItem Value="" Text="-1"&gt;-&lt;/asp:ListItem&gt; 中分配了一个默认值,但我通过值选择它,将您的标记修改为此&lt;asp:ListItem Value="-1" Text="--"&gt;-&lt;/asp:ListItem&gt;

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


【解决方案1】:

回答你的问题:

  1. 您不能将null 设置为ListItem 的值,因为null 不是字符串文字。 null 表示缺少该值。 null 本身“不是一个值”。所以你需要在你的代码中处理它:

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

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

【讨论】:

    【解决方案2】:

    至于您的问题,请参阅下面的文章以获取 asp.net 中的下拉列表

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

    【讨论】:

    • 这更像是一条评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多