While testing my code in IE6 I faced a quite strange error and it's simple to reproduce:
1. Create a simple WebDataTree, add some nodes
2. Make sure you are not using ajax and updatePanel (issue doesn't happen when UpdatePanel is present)
3. Trap the OnNodeClick on the server, enable autopostback so your server method gets called then a node is clicked;
4. Now, inside this OnClick method, do something simple like adding/changing Text to/of a asp.net label object.
5. Do a test: try clicking the node, you will see the node onClick server event is triggered but for some weird reason the page will not be refreshed and the label that you changed will not reflect the changes..
This works perfectly fine with IE8... PS: while testing I trapped the onclick client event and if I display a javascript "alert" window then the page gets refreshed and the label updated... So weird!
I had to give up and changed my code to use an UpdatePanel, then everything works fine, the only problem I was trying to avoid with that is having to manually code the browser's history. Too bad.
Attached is a code sample with this issue (and with the different attempts trying to fix it).
Hi,
I've saw the sample and you should not try to call the node click handler instead you should have the following:
<ig:WebDataTree ID="CategoriesTree" runat="server" Height="200px" Width="200px" OnNodeClick="nodeClicked"> <AutoPostBackFlags NodeClick="On" /> </ig:WebDataTree> <asp:Label ID="lblDebug" runat="server" Text=""></asp:Label>
and on the server side in:
protected void nodeClicked(object sender, DataTreeNodeClickEventArgs e) { lblDebug.Text = "Bingo"; }
Hope this helps.
Thanks,
Lubomir
I can't get this example to work.
Here's the aspx:
<%
%>
<!
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
="http://www.w3.org/1999/xhtml">
="server">
>
</
="nodeClicked">
/>
"TestID"/>
And the code behind.
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable("TestTable");
dt.Columns.Add(
"TestID");
"TestValue");
"TestText");
DataRow dr = dt.NewRow();
dr[
"TestID"] = "1";
"TestValue"] = "1";
"TestText"] = "Info 1";
dt.Rows.Add(dr);
dr = dt.NewRow();
"TestID"] = "2";
"TestValue"] = "2";
"TestText"] = "Info 2";
DataSet data = new DataSet();
data.Tables.Add(dt);
CategoriesTree.DataSource = data;
CategoriesTree.DataBind();
}
protected void nodeClicked(object sender, DataTreeNodeClickEventArgs e)
lblDebug.Text =
"Bingo";
Any help would greatly be appreciated.
Coleman Baker