SqlDataSource Declaration

pitaridis

Well-known member
Joined
Nov 18, 2005
Messages
63
Programming Experience
10+
When you bound a GridView using Visual Studio it generates server side HTML code. I try to make it 100% source code in VB.NET. I have the following ASPX file:

VB.NET:
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        SqlDataSource1.ConnectionString = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString

        SqlDataSource1.SelectCommand = "SELECT [ID], [Voudou] FROM [Table1] ORDER BY [Voudou]"

        SqlDataSource1.DeleteCommand = "DELETE FROM [Table1] WHERE [ID] = @ID"
        SqlDataSource1.DeleteParameters.Add("ID", System.Data.DbType.Int32)

        SqlDataSource1.InsertCommand = "INSERT INTO [Table1] ([Voudou]) VALUES (@Voudou)"
        SqlDataSource1.InsertParameters.Add("Voudou", System.Data.DbType.String)

        SqlDataSource1.UpdateCommand = "UPDATE [Table1] SET [Voudou] = @Voudou WHERE [ID] = @ID"
        SqlDataSource1.UpdateParameters.Add("ID", System.Data.DbType.Int32)
        SqlDataSource1.UpdateParameters.Add("Voudou", System.Data.DbType.String)
        If Not IsPostBack Then

            GridView1.DataSourceID = SqlDataSource1.ID
            GridView1.AllowPaging = True
            GridView1.AllowSorting = True
            GridView1.AutoGenerateColumns = False
            GridView1.DataKeyNames = {"ID"}

            Dim ID As New BoundField
            ID.DataField = "ID"
            ID.HeaderText = "ID"
            ID.InsertVisible = False
            ID.ReadOnly = True
            ID.SortExpression = "ID"
            GridView1.Columns.Add(ID)

            Dim Voudou As New BoundField
            Voudou.DataField = "Voudou"
            Voudou.HeaderText = "Voudou"
            Voudou.SortExpression = "Voudou"
            GridView1.Columns.Add(Voudou)

            Dim MyCommands As New CommandField
            MyCommands.ShowDeleteButton = True
            MyCommands.ShowEditButton = True
            MyCommands.ShowSelectButton = True
            GridView1.Columns.Add(MyCommands)
        End If
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:GridView ID="GridView1" runat="server">
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server">
        </asp:SqlDataSource>
    </form>
</body>
</html>

The above code works fine but when I try to declare the SqlDataSource1 object using VB.NET for some reason it does not work:

VB.NET:
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    WithEvents SqlDataSource1 As New SqlDataSource
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        SqlDataSource1.ConnectionString = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString

        SqlDataSource1.SelectCommand = "SELECT [ID], [Voudou] FROM [Table1] ORDER BY [Voudou]"

        SqlDataSource1.DeleteCommand = "DELETE FROM [Table1] WHERE [ID] = @ID"
        SqlDataSource1.DeleteParameters.Add("ID", System.Data.DbType.Int32)

        SqlDataSource1.InsertCommand = "INSERT INTO [Table1] ([Voudou]) VALUES (@Voudou)"
        SqlDataSource1.InsertParameters.Add("Voudou", System.Data.DbType.String)

        SqlDataSource1.UpdateCommand = "UPDATE [Table1] SET [Voudou] = @Voudou WHERE [ID] = @ID"
        SqlDataSource1.UpdateParameters.Add("ID", System.Data.DbType.Int32)
        SqlDataSource1.UpdateParameters.Add("Voudou", System.Data.DbType.String)
        If Not IsPostBack Then

            GridView1.DataSourceID = SqlDataSource1.ID
            GridView1.AllowPaging = True
            GridView1.AllowSorting = True
            GridView1.AutoGenerateColumns = False
            GridView1.DataKeyNames = {"ID"}

            Dim ID As New BoundField
            ID.DataField = "ID"
            ID.HeaderText = "ID"
            ID.InsertVisible = False
            ID.ReadOnly = True
            ID.SortExpression = "ID"
            GridView1.Columns.Add(ID)

            Dim Voudou As New BoundField
            Voudou.DataField = "Voudou"
            Voudou.HeaderText = "Voudou"
            Voudou.SortExpression = "Voudou"
            GridView1.Columns.Add(Voudou)

            Dim MyCommands As New CommandField
            MyCommands.ShowDeleteButton = True
            MyCommands.ShowEditButton = True
            MyCommands.ShowSelectButton = True
            GridView1.Columns.Add(MyCommands)
        End If
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:GridView ID="GridView1" runat="server">
        </asp:GridView>
    </form>
</body>
</html>

It does not cause any error but nothing appears on the screen. Can someone help me to solve this problem?

Thanks in advance.
 
Try this:

VB.NET:
    Private Sub CreateDataSource()
        Dim datasource As New SqlDataSource
        datasource.ID = "MyDataSource"
        datasource.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
        datasource.SelectCommand = "SELECT ID, Voudou FROM Table1"
        datasource.SelectCommandType = SqlDataSourceCommandType.Text
        Me.Page.Controls.Add(datasource) ' PAY ATTENTION TO THIS LINE :)
        GridView1.DataSourceID = datasource.ID
        GridView1.DataBind()
    End Sub
 
Thank you for your reply my friend. This works fine now.
 
Back
Top