我需要向用户显示字符串列表。用户可以选择多个字符串。如果选择了一组特定的字符串,则每个字符串旁边都会出现一个文本框。
我想做的是向用户显示一个TREEVIEW,每个节点都是字符串之一。他们将通过选中复选框来选择所需的每个字符串。
问题:
如果用户选择特定的复选框,则我需要一个文本框来显示用户的GET输入。
问题:如何从用户使用树形视图获取字符串输入?
参考方案
TreeView不支持原生包含TextBoxes。您可以使用JavaScript解决方案在其中创建客户端文本框,并将值映射序列化为<asp:HiddenField />
。
设置您的TreeView和HiddenField:
<asp:TreeView runat="server"
ID="MyTreeView"
ShowCheckBoxes="All"
NodeStyle-CssClass="node">
...
</asp:TreeView>
<asp:Hidden runat="server" ID="TreeViewTextValues" />
一些jQuery:
$(".node :checkbox").click(function (e) {
var node = $(this).closest(".node");
if (this.checked) {
$("<input/>").addClass("nodeTextBox").appendTo(node);
}
else {
node.find("input.nodeTextBox").remove();
}
});
$("form").submit(function (e) {
var nodeText = $("input.nodeTextBox").map(function () {
return encodeURIComponent(this.value);
});
$("input[type=hidden][id$=TreeViewTextValues]").val(nodeText.join("&"));
});
一些C#:
var text = TreeViewTextValues.Value.Split('&').Select(s => Server.UrlDecode(s));
// text.ElementAt(n) maps to MyTreeView.CheckedNodes[n]
未经测试,但希望对您有所帮助。
ASP.NET MVC 5自定义登录,无需脚手架,数据库优先 - c#我对asp.net和mvc还是很陌生,所以我正在努力学习尽可能多的知识...为此,我从头开始编写博客网站,但是我对身份验证和授权有些困惑。由于我倾向于不真正使用任何脚手架的东西,所以我首先要使用数据库,所以不希望asp.net身份为我创建表。我对散列和加盐密码很酷,并对照数据库检查用户,我遇到的麻烦是将用户设置为登录状态并检查他们应该能够访问什么。我真的很想…
asp.net oledbcommand返回所有行 - c#我正在使用Oledbconnection连接到Microsoft Access数据库,并且正在使用OleDbCommand检索一些信息。我在数据库中有一个名为retrieveInfo的查询,该查询检索3行数据。字段中有一些重复项,但是应该是这样。我的数据如下所示: Name Email A [email protected] B [email protected] B C@gmai…
ASP.NET在ContentPlaceHolderID之前添加DIV标签 - c#我正在尝试使用C# / ASP.NET从Oracle Database中提取日期,如果该日期晚于某天,则隐藏表单的一部分。问题是,通常当我使用div runat=server从ASP.NET内部进行调用时,我只能说CONTROLID.Visible=true即可。出于某种原因,该表格在运行时会在服务器上运行的任何DIV前面加上“ mainContent _”…
asp.net使用客户端验证而不发布到服务器 - c#我有一个很长的表格,分为几个部分。我想利用内置的ASP.NET验证控件而不在提交表单之前将其回发到服务器。为了提供更多的上下文,让我解释一下我的想法。该表格分为几部分,每个部分都有一个“下一步”按钮。单击“下一步”按钮时,将使用ASP.NET包含的客户端代码来验证该部分。如果该部分有效,则jquery方法将隐藏该部分并显示下一个。当用户到达表单的最后部分时,…
ASP.NET Gridview ButtonField onclick触发包含行的onclick事件 - c#我有一个gridview行,当单击该行时必须执行回发操作A,而在该行中单击该行时必须执行回发操作B的按钮字段。问题是,当我单击按钮字段时,会触发event1和event2。下面是代码。protected void gdv_RowCommand(object sender, GridViewCommandEventArgs e) { string arg = …