我有一些我编写的代码可以在testbed中运行但不是程序。这两个程序都来自同一个项目,每个项目都进行了微小的更改。
我尝试做的是在选择某个选项时更改下拉框的状态。这是该项目的工作版本:
VB:
Protected Sub dd_customer_AddTo(ByVal sender As Object, ByVal e As System.EventArgs) Handles dd_customer.SelectedIndexChanged
If (dd_customer.SelectedItem.Value = "Add Customer to Database...") Then
dd_customer.Visible = False
txt_customer.Visible = True
lb_customer.Visible = True
End If
End Sub
ASP.NET
<asp:Label ID="lbl_Customer" runat="server" Font-Bold="True" Text="Customer: "></asp:Label><br />
<div>
<asp:UpdatePanel ID="up_customer" runat="server">
<ContentTemplate>
<asp:DropDownList ID="dd_customer" runat="server" DataSourceID="SQLDS_GetCustomers"
DataTextField="name" DataValueField="id" Width="189px" AppendDataBoundItems="True" AutoPostBack="true">
<asp:ListItem>Please Select Customer</asp:ListItem>
<asp:ListItem>Add Customer to Database...</asp:ListItem>
</asp:DropDownList>
<asp:TextBox ID="txt_customer" runat="server" AutoPostBack="true" Width="189px" Visible="false"></asp:TextBox>
<asp:LinkButton ID="lb_customer" runat="server" Commandname="customer" OnClick="lb_dd_click" CausesValidation="false" Visible="false">Add customer</asp:LinkButton>
<asp:RequiredFieldValidator ID="rfv_customer" runat="server" ControlToValidate="dd_Customer"
ErrorMessage="Please Select Customer" InitialValue="Please Select Customer">Please Select Customer</asp:RequiredFieldValidator>
<asp:SqlDataSource ID="SQLDS_GetCustomers" runat="server" ConnectionString="<%$ ConnectionStrings:testlogConnectionString1 %>"
SelectCommand="SELECT [name],[id] FROM [customer] ORDER BY [ID]"></asp:SqlDataSource>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<br />
以下是无法使用的实时版本:
VB
Protected Sub DropDownList1_AddTo(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
Dim stra As String
stra = "test"
If (DropDownList1.SelectedItem.Value = "Add Customer to Database...") Then
DropDownList1.Visible = False
txt_customer2.Visible = True
lb_customer.Visible = True
End If
End Sub
ASP.NET
<asp:UpdatePanel ID="up_customer" runat="server" EnableViewState="true">
<ContentTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="txt_customer" DataValueField="id"
Width="189px" AppendDataBoundItems="True" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_AddTo">
<asp:ListItem>Please Select Customer</asp:ListItem>
<asp:ListItem>Add Customer to Database...</asp:ListItem>
</asp:DropDownList>
<asp:TextBox ID="txt_customer2" runat="server" AutoPostBack="true" Width="189px" Visible="false"></asp:TextBox>
<asp:LinkButton ID="lb_customer" runat="server" Commandname="customer" OnClick="lb_dd_click" CausesValidation="false" Visible="false">Add customer</asp:LinkButton>
<asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server" ControlToValidate="DropDownList1"
ErrorMessage="Please Select Customer" InitialValue="Please Select Customer">Please Select Customer</asp:RequiredFieldValidator>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:testlogConnectionString1 %>"
SelectCommand="SELECT [txt_customer], [ID] FROM [tbl_customer] ORDER BY [ID]"></asp:SqlDataSource>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<br />
通过设置断点,我能够看到根本没有达到VB功能,这完全让我感到困惑。这向我表明它是ASP.NET或某处设置的问题,但我不确定它们可能在哪里发生分歧。
我注意到的其他事情,当我点击我想要的选项时,然后点击初始选项,验证会短暂闪烁。
两个版本都将AutoEventWireup
设置为false。
提前谢谢!
编辑:
我添加了一个测试功能,它与AutoPostback一起使用。我能够在此事件之前和之后运行一个函数并查看ASP.NET页面上的更改。关于为什么它不会在这一个地方工作的任何想法?