从 ComboBox 中获取价值?

Getting Value from a ComboBox?

我看过这里的许多其他线程,它们都有类似的问题,但无法解决我的问题。我正在为我的组合框使用以下代码:

<sq8:ComboBox runat="server" ID="cboAgree"><Items>
<sq8:ComboBoxItem runat="server" Text="Agree"></sq8:ComboBoxItem>
<sq8:ComboBoxItem runat="server" Text="Disagree"></sq8:ComboBoxItem>
</Items>
</sq8:ComboBox>
<sq:BindableControl runat="server" TargetControlID="cboAgree" DataField="Agreement"></sq:BindableControl>

我想获取选定的值("Agree" 或 "Disagree")并将其用作 hide/unhide 我表单上的网格的条件:

   if (value == "Disagree") {
  commentsGrid.style.visibility = "visible";
  }else{
  commentsGrid.style.visibility = "hidden";
  } 

我已经尝试了很多方法,但问题似乎出在表单的加载方式上,而此时组合框没有值。我总是收到一个错误,提示我的组合框 "cboAgree" 为空。

有人可以指点一下吗?

我相信您想要的 - 根据您在 other post 中构建代码的方式,是向您的组合框添加一个事件处理程序,以便在更改所选索引时检查选择.

这种情况在 documentation here 中有所介绍,但基本上您想要做的是:

  1. 在现有 javascript 中添加以下块:
function onSelectedIndexChanged(sender, eventArgs) 
{
    var item = eventArgs.get_item();

    if (value == "Disagree") {
        commentsGrid.style.display = "block";
    } else {
        commentsGrid.style.display = "none";
    } 
}

我建议将 display 属性 设置为 noneblock 而不是将 visibilityhidden 和 [=17 一起使用=]. This answer 涵盖了差异以及在这种情况下您应该更喜欢使用 display 属性 的原因。

  1. 更新您的 ComboBox 以调用新的 Javascript 方法:
<sq8:ComboBox runat="server" ID="cboAgree"
onclientselectedindexchanged="onSelectedIndexChanged">