ASP.NET回发的树状的选择复选框 [英] ASP.NET PostBack on selecting checkbox of treeview
问题描述
我有一个asp.net项目和工作在C#。
在项目中,我有一个复选框列表框数据绑定。
当用户点击一个复选框,它应该为一个例子更新标签/文本框。
问题是,它不更新标签/文本框,直到我点击一个按钮,做回发。我会怎么称呼上的复选框更改事件回传,自从OnTreeNodeCheckChanged事件看起来只闪光一次回传被触发?
这甚至是一个好主意(希望每次一个复选框已更改时间打电话回发)
- 更新code Snippet--
ASP
< ASP:TreeView的ID =treevCourses=服务器的AutoPostBack =真ShowCheckBoxes =所有WIDTH =100%
OnTreeNodeCheckChanged =check_changedHEIGHT =16像素ImageSet =联系人>
(有试过在C#部分的处理程序。)
C#
保护无效check_changed(对象发件人,TreeNodeEventArgs E)
{
lblTest.Text =TestText;
}
(也试过有它在脚本部分)
无效check_changed(对象发件人,EventArgs的发送)
{
lblTest.Text =TestText;
}
数据绑定到TreeView(出现这种情况的一个按钮回发)
的foreach(DataRow的行中ds.Tables [0] .Rows)
{
树节点节点=新的TreeNode(行[课程名]的ToString(),行[课程名]的ToString());
// node.PopulateOnDemand = TRUE;
treevCourses.Nodes.Add(节点);
}
//来自那里的话题= parentId的选择topicId。
DS = myConClass.returnSqlDataset(选择cd.courseName,CT [日期]从courseDetails CD上cd.courseId = ct.courseId加入courseTimes克拉); 的foreach(在treevCourses.Nodes树节点树节点)
{
的foreach(DataRow的行中ds.Tables [0] .Rows)
{
如果(行[课程名]。的ToString()== treenode.Value)
{
树节点节点=新的TreeNode(行[日]的ToString(),行[日]的ToString());
treenode.ChildNodes.Add(节点);
}
}
}
有上TreeView控件没有的AutoPostBack
属性。而作为每<一个href=\"http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.treeview.ontreenodecheckchanged.aspx\">MSDN,在 TreeNodeCheckChanged
事件出现时,在岗位之间的 TreeView控件
控制变化状态的复选框,将服务器
您需要其他人做一些事情,比如提到的此链接
1)添加上单击属性上的TreeView1页面加载
保护无效的Page_Load(对象发件人,EventArgs的发送)
{
TreeView1.Attributes.Add(的onclick,postBackByObject());
}
2)添加Java脚本函数,做回发
&LT;脚本类型=文/ JavaScript的&GT; 功能postBackByObject()
{
变种O = window.event.srcElement;
如果(o.tagName ==输入&放大器;&安培; o.type ==复选框)
{
__doPostBack(,);
}
}
&LT; / SCRIPT&GT;
3)。实施 TreeNodeCheckChanged
事件
保护无效TreeView1_TreeNodeCheckChanged(对象发件人,TreeNodeEventArgs E)
{
// 做东西
}
I have an asp.net project and working in C#.
In my project I have a databound listbox that has checkboxes.
When the user clicks on a checkbox it should for an example update a label/textbox.
The thing is, it doesnt update the label/textbox until I click on a button that does a postback. How will I Call a postback on the checkbox changed event, since the "OnTreeNodeCheckChanged" event looks like it only fires once the postback has been triggered? Is this even a good idea (to want to call a postback every time the a checkbox has been changed)
--Updated code Snippet-- Asp
<asp:TreeView ID="treevCourses" runat="server" AutoPostBack="true" ShowCheckBoxes="All" Width="100%"
OnTreeNodeCheckChanged="check_changed" Height="16px" ImageSet="Contacts">
(Tried having the handler in the C# part.) C#
protected void check_changed(object sender, TreeNodeEventArgs e)
{
lblTest.Text = "TestText";
}
(Also tried having it in the script part)
void check_changed(object sender, EventArgs e)
{
lblTest.Text = "TestText";
}
Binding data to the Treeview (this happens on a button postback)
foreach (DataRow row in ds.Tables[0].Rows)
{
TreeNode node = new TreeNode(row["courseName"].ToString(), row["courseName"].ToString());
// node.PopulateOnDemand = true;
treevCourses.Nodes.Add(node);
}
//select from topic where parentId = topicId.
ds = myConClass.returnSqlDataset("select cd.courseName,ct.[date] from courseDetails cd join courseTimes ct on cd.courseId = ct.courseId");
foreach (TreeNode treenode in treevCourses.Nodes)
{
foreach (DataRow row in ds.Tables[0].Rows)
{
if (row["courseName"].ToString() == treenode.Value)
{
TreeNode node = new TreeNode(row["date"].ToString(), row["date"].ToString());
treenode.ChildNodes.Add(node);
}
}
}
There is no AutoPostBack
property on TreeView. And as per the MSDN, The TreeNodeCheckChanged
event is raised when a check box in the TreeView
control changes state between posts to the server
You need to do something else, like mentioned on this link
1) Add on click attribute to TreeView1 on page load
protected void Page_Load(object sender, EventArgs e)
{
TreeView1.Attributes.Add("onclick", "postBackByObject()");
}
2) add java script function and do the post back
<script type="text/javascript">
function postBackByObject()
{
var o = window.event.srcElement;
if (o.tagName == "INPUT" && o.type == "checkbox")
{
__doPostBack("","");
}
}
</script>
3). Implement TreeNodeCheckChanged
event
protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
{
// do stuff
}
这篇关于ASP.NET回发的树状的选择复选框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!