我遇到更新文本框的下拉列表问题,这些文本框都保存在列表视图中,更新面板中又是项目模板。
更新
我在相同的项目中使用相同的代码而没有上述容器,但是在将它与lisview和其他容器链接时却遇到了问题。
我不确定问题出在哪里,onClick不会被解雇,除非回调到服务器,无论下拉列表是否包含在上述容器中。
非常感谢任何帮助,提前谢谢。
使用asp(1st)和VB代码(第二个)。
<InsertItemTemplate>
<asp:panel runat="server" ChildrenAsTriggers="true" UpdateMode="Always">
<asp:ListView ID="ListView1" runat="server" InsertItemPosition="FirstItem" IAllowPaging="True" EnableViewState="true">
<tr>
<td>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("Details")%>' TextMode="MultiLine" />
</td>
<td>
<asp:DropDownList ID="DLL" runat="server" OnSelectedIndexChanged="DLL_SelectedIndexChanged" AutoPostBack="true "EnableViewState="true">
<asp:ListItem>Select</asp:ListItem>
<asp:ListItem Value="1">Yes</asp:ListItem>
<asp:ListItem Value="2">No</asp:ListItem>
<asp:ListItem Value="3">Maybe</asp:ListItem>
<asp:ListItem Value="4">I dont know</asp:ListItem>
<asp:ListItem Value="5">Can you repeat</asp:ListItem>
<asp:ListItem Value="6">the question</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
</asp:panel>
</InsertItemTemplate>
背后的代码
Protected Sub DDL_SelectedIndexChanged(sender As Object, e As EventArgs)
Dim ddl As DropDownList = DirectCast(sender, DropDownList)
Dim listviewItemThing = DirectCast(sender.parent.NamingContainer, ListViewItem)
Dim tb As TextBox = DirectCast(ddl.NamingContainer.FindControl("TextBox2"), TextBox)
If ddl.SelectedValue = 1 Then
tb.Text = My.Computer.FileSystem.ReadAllText("E:\Users\han\Documents\Templates\1.txt")
ElseIf ddl.SelectedValue = 2 Then
tb.Text = My.Computer.FileSystem.ReadAllText("E:\Users\han\Documents\Templates\2.txt")
ElseIf ddl.SelectedValue = 3 Then
tb.Text = My.Computer.FileSystem.ReadAllText("E:\Users\han\Documents\Templates\3.txt")
ElseIf ddl.SelectedValue = 4 Then
tb.Text = My.Computer.FileSystem.ReadAllText("E:\Users\han\Documents\Templates\4.txt")
ElseIf ddl.SelectedValue = 5 Then
tb.Text = My.Computer.FileSystem.ReadAllText("E:\Users\han\Documents\Templates\5.txt")
ElseIf ddl.SelectedValue = 6 Then
tb.Text = My.Computer.FileSystem.ReadAllText("E:\Users\han\Documents\Templates\6.txt")
Else
tb.Text = ""
End If
End Sub
更新2
根据要求,请参阅VS2013上调试中浏览器控制台错误的附加屏幕截图
并扩大了错误。
更新3
添加了JQuery以尝试强制PostBack。
function JsFunction() {
__doPostBack('DLL_SelectedIndexChanged', '');
}
ASP链接到JQ
<asp:DropDownList ID="DDL" runat="server" Width="120px" OnSelectedIndexChanged="DDL_SelectedIndexChanged" AutoPostBack="true" CausesValidation="false" EnableViewState="true" onchange="javascript:JsFunction()">
答案 0 :(得分:1)
您的下拉列表中包含正确的代码,因此在其他位置出现错误。
正如您在错误消息中看到的那样:当您尝试使用HtmlEditorExtender
提交表单问题时
因此,只需删除或禁用它即可快速解决问题。
对于HtmlEditorExtender
的错误,我们需要一些信息,当然,如果你还需要解决它。
答案 1 :(得分:0)
假设这些控件位于ItemTemplate
的{{1}}内:
ListView
无法使用,因为它正在尝试在页面中找到控件; FindControl("DDL")
无法使用,因为ListView1.FindControl("TextBox2")
中会有多个TextBox2
个实例。请改为尝试:
ListView
答案 2 :(得分:0)
我假设您的实际代码中没有拼写错误:
OnSelectedIndexChanged="DLL_SelectedIndexChanged"
事件处理程序是DDL_SelectedIndexChanged。
您是否设置了一个断点来检查事件处理程序是否未被调用,或者在它未能执行您希望它执行的转换后是否在某个时刻挽救?