Hi Experts,
Please help, I am a newbie to ASP.NET 2.0 may be I am doing something wrong or there may be a bug somewhere.
Basically I have a TreeView Control which I have created programmatically. And I want to bind the selection of a TreeNode (which is a record) from the database) to a DetailsView which shows the datatable record for the selected TreeView node in the Details View.
I am using IDE : Visual Web Developer 2005 Express; OS= Windows XP Professional;
Language used VB.NET; Database being used MySQL Server 5.0, for my database, using MySQL Connector/ODBC 3.51 and also installed MYSQL Connector/Net 5.0.8.1
The TreeView appears to work when
'Declared the variable below
<script runat=server>
Public TreeNodeValue As String
[TreeView Code goes here, can be provided if requested]
' left out for clarity...
'Event Handler code to display TreeViewNode selection
- Protected Sub TreeViewCommondata_SelectedNodeChanged(ByVal sender As Object, ByVal e As System.EventArgs)
-
TreeNodeValue = TreeViewCommondata.SelectedNode.Value
-
Response.Write("You selected TreeViewNode value : " & _TreeViewCommondata.SelectedNode.Value)
-
End Sub
-
</script>
When at run time, when the TreeNode is selected the above Response.Write renders to the webpage with the selected TreeView control and displays the String for the TreeNode selected.
Now I want to bind the selected TreeView node to a DetailsView so I basically draggged SqlDatasource to webpage containing TreeViewcontrol and also dragged the DetalisView on this webpage. Configured the datasource for SQLDatasource to my MySQL database)
Also the markup is as follows:
-
<body>
-
<form id="form1" runat="server">
-
<div>
-
<!-- The TreeView control associates the OnTreeNodePopulate method with an event handler named_
-
Node_Populate -->
-
<asp:TreeView Runat="Server" ExpandImageUrl="Images/closed.gif" CollapseImageUrl="Images/open.gif" OnTreeNodePopulate="Node_Populate" ID="TreeViewCommondata" ImageSet="Simple" ShowLines="True" NodeWrap="True" Width="260px" OnSelectedNodeChanged="TreeViewCommondata_SelectedNodeChanged" OnDataBinding="TreeViewCommondata_SelectedNodeChanged" OnDataBound="TreeViewCommondata_SelectedNodeChanged">
-
<Nodes>
-
<asp:TreeNode Text="Common data" PopulateOnDemand=True Value="0" >
-
</asp:TreeNode>
-
</Nodes>
-
<ParentNodeStyle Font-Bold="False" />
-
<HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
-
<SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD" HorizontalPadding="0px"
-
VerticalPadding="0px" />
-
<NodeStyle Font-Names="Tahoma" Font-Size="10pt" ForeColor="Black" HorizontalPadding="0px"
-
NodeSpacing="0px" VerticalPadding="0px" />
-
</asp:TreeView>
-
-
</div>
-
<asp:DetailsView ID="DetailsView1" runat="server" AllowPaging="True" BackColor="#CCCCCC"
-
BorderColor="#999999" BorderStyle="Solid" BorderWidth="3px" CellPadding="4" CellSpacing="2"
-
DataSourceID="SqlDataSource1" ForeColor="Black" Height="50px" Width="700px" style="left: 309px; position: absolute; top: 34px">
-
<FooterStyle BackColor="#CCCCCC" />
-
<EditRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
-
<RowStyle BackColor="White" />
-
<PagerStyle BackColor="#CCCCCC" ForeColor="Black" HorizontalAlign="Left" />
-
<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
-
</asp:DetailsView>
-
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:bier_compact_test5ConnectionString %>"
-
ProviderName="<%$ ConnectionStrings:bier_compact_test5ConnectionString.ProviderName %>" SelectCommand="SELECT * FROM commondata WHERE Name=?TreeNodeValue">
-
<SelectParameters>
-
<asp:ControlParameter ControlID="TreeViewCommondata" Name="Name" PropertyName="SelectedValue"
-
Type="String" />
-
</SelectParameters>
-
</asp:SqlDataSource>
-
</form>
-
</body>
-
When I run the page I get the TreeView control on the webpage, however when I select a node I get the error:-
"ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-5.0.37-community-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TreeNodeValue' at line 1"
However, if I hard code the mark-up and replace the ?TreeNodeValue with 'Field name' from the MySQL table a DetailsView is displayed albeit fixed to that field.
I have seen previous example s on the Internet using SQL Server which uses @ as the placeholder and assumed it would be a matter of using ? for MySQL.
Maybe it's a postback thing I am not understanding, or is it a page life-cycle issue?
I have seen on some forums that this maybe a bug with MySQL connector regarding passing value parameters. However, I just do not have the knowledge at the moment for a workaround. Maybe using the ObjectDataSource object? I don’t know?
Maybe doing some not correct of missing something, probably straight forward for a experienced developers.
Any examples, pointers and help/guidance would be deeply appreciated.
Regards
Martin(MAK36)