2

在我的经典 asp 应用程序中,我有一个带有一堆复选框的标记页面。复选框控件 ID 是 bscv。

一旦用户选中一个框并单击提交,就会在名为 next.asp 的下一页处理该值。

根据复选框的值,我显示正确的下拉菜单。

我在 next.asp 上使用以下代码来显示正确的下拉菜单。

If bsvc = "master" Then
    ' only master was checked
    ' "If the user checks only master checkbox, ...txtmaster with 2 options... is displayed."

%>
<select id="txtmaster" name="txtmaster">
        <option value="">-Select a service-</option>
        <option value="1">1</option>
        <option value="2">2</option>
     </select>
<%
Elseif InStr(bsvc, "master") > 0 Then
    ' Master was checked, but something else was also checked
    ' display txtmaster with all 7 options dropdowon 1 and 2       

%>
 <select id="txtmaster" name="txtmaster">
        <option value="">-Select a service-</option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
        <option value="6">6</option>
        <option value="7">7</option>
     </select>
<%
Elseif Len(bsvc) > 0 Then
    ' something was checked, but not master
    ' " display only dropdown with 3 to 7 ."

%>
<select id="txtmaster" name="txtmaster">
          <option value="">-Select a service-</option>
           <option value="3">3</option>
          <option value="4">4</option>
          <option value="4">5</option>
          <option value="5">5</option>
          <option value="6">6</option>
              <option value="7">7</option>
  </select>

<%
Else
    Response.Write "Error: You did not check any business serviced"
End If
%>

这很好用。

现在,在 asp.net 上,我正在使用多视图并且我正在尝试完成相同的操作。

在 view1 上,我有复选框。当我单击下一步时,我想根据复选框的值显示正确的下拉列表。

我怎样才能完成与上面的代码类似的事情?

提前谢谢你。

4

2 回答 2

2

一种方法与你所拥有的非常相似......

<asp:checkboxlist>在您的标记中使用一个。

然后,对于提交按钮的单击事件,您可以根据在复选框列表中找到的选中值将下拉列表的“可见”属性设置为 true 或 false。

或者,您可以声明一些listitem对象,只有一个dropdownlist,然后listitem根据您的checkboxlist.

For each myItem as listitem in myCheckboxlist
if ctype(myItem, checkox).checked then...

无论如何,沿着那个思路

于 2012-06-18T20:38:14.440 回答
1

我从来没有使用过Multiview,所以如果我完全脱离基地,请原谅我。但看起来视图 1 上的控件应该可以直接使用。由于您使用的是多视图,因此您实际上永远不会离开页面,只是发回并更改活动视图。因此,视图 1(或任何其他视图)上的每个控件仍然可以访问。

如果您不能直接引用复选框,例如复选框是动态的(如数据绑定或其他),您应该能够使用 View1.FindControl 或类似的东西。

我错过了什么吗?

'View1 contains three CheckBoxes and ButtonNext.
'View2 contains three DropDownLists and ButtonBack.

Protected Sub ButtonNext_Click(sender As Object, e As EventArgs) Handles ButtonNext.Click
    SetListVisibility()
    MultiView1.SetActiveView(View2)
End Sub

Protected Sub ButtonBack_Click(sender As Object, e As EventArgs) Handles ButtonBack.Click
    MultiView1.SetActiveView(View1)
End Sub

Private Sub SetListVisibility()
    If CheckBox1.Checked Then
        If CheckBox2.Checked Or CheckBox3.Checked Then
            DropDownList1.Visible = False
            DropDownList2.Visible = False
            DropDownList3.Visible = True
        Else
            DropDownList1.Visible = True
            DropDownList2.Visible = False
            DropDownList3.Visible = False
        End If
    Else
        DropDownList1.Visible = False
        DropDownList2.Visible = True
        DropDownList3.Visible = False
    End If
End Sub
于 2012-06-18T22:54:30.897 回答