Solved

Bind data to a gridview using datareader

Posted on 2009-04-12
7
3,081 Views
Last Modified: 2012-05-06
Hi there, i am trying to Read some data from the db and bind it to gridview using datareader, i think my code should be right but anyway i don't get the data binded to the gridview and i don't get any errors...

Here is my code...

<table class="style1">

        <tr>

            <td class="style4">

                <asp:Label ID="lblSearch" runat="server" Text="Search:"></asp:Label>

            </td>

            <td class="style3">

                <asp:TextBox ID="txtSearch" runat="server" style="margin-left: 0px" 

                    Width="250px"></asp:TextBox>

            </td>

            <td class="style5">

                <asp:Button ID="btnSearch" runat="server" Text="Submit" />

            </td>

            <td>

                <asp:RequiredFieldValidator ID="rvSearch" runat="server" 

                    ErrorMessage="Field is required!" ControlToValidate="txtSearch"></asp:RequiredFieldValidator>

            </td>

        </tr>

        <tr>

            <td class="style2" colspan="4">

                &nbsp;</td>

        </tr>

        <tr>

            <td class="style2" colspan="4">

                <asp:GridView ID="gvSearch" AutoGenerateColumns="false" runat="server">

                </asp:GridView>

            </td>

        </tr>

    </table>

--------------------------------------

    Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click

        Search()

    End Sub

    Sub Search()
 

        Dim strSearch As String = txtSearch.Text
 

        Dim MyConn As OleDbConnection = New OleDbConnection(ConfigurationManager.AppSettings("strConn"))

        Dim MySQL As String = "SELECT * FROM [tblTopics] WHERE [tblTopics.TopicSubject] = @TopicSubject"

        Dim MyCmd As New OleDbCommand(MySQL, MyConn)
 

        With MyCmd.Parameters

            .Add(New OleDbParameter("@TopicSubject", strSearch))

        End With
 

        MyConn.Open()
 

        Dim objDataReader As OleDbDataReader = MyCmd.ExecuteReader()
 

        gvSearch.DataSource = objDataReader

        gvSearch.DataBind()
 

        MyConn.Close()
 

    End Sub

End Class

Open in new window

0
Comment
Question by:Neste
  • 2
  • 2
  • 2
  • +1
7 Comments
 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 24126789
why a datareader?
    Sub Search()
 
        Dim strSearch As String = txtSearch.Text
 
        Dim MyConn As OleDbConnection = New OleDbConnection(ConfigurationManager.AppSettings("strConn"))
        Dim MySQL As String = "SELECT * FROM [tblTopics] WHERE [tblTopics.TopicSubject] = @TopicSubject"
        Dim MyCmd As New OleDbCommand(MySQL, MyConn)
 
        With MyCmd.Parameters
            .Add(New OleDbParameter("@TopicSubject", strSearch))
        End With 
        MyConn.Open() 
        Dim MyAdapter as New DataAdapter(MyCmd)
        Dim Mydataset as New DataSet()
        MyAdapter.Fill(mydataset)  
        gvSearch.DataSource = mydataset
        gvSearch.DataBind()
 
        MyConn.Close()
 
    End Sub

Open in new window

0
 

Author Comment

by:Neste
ID: 24128141
Cant make it work whit your code, the gridview is still empty when i click the button :(

Any ideas ?
0
 

Author Comment

by:Neste
ID: 24128212
Please any help is more then welcome, i really need to have this done in 2 days...thanks

0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 24128217
did you define the bound columns definitions in the gridview already?
0
 

Accepted Solution

by:
apramod earned 125 total points
ID: 24128443
From the above code what i find is you have not defined bound columns in your gridview. You are getting data but u need to bind those columnd definations in gridview.
Ex:
asp:GridView ID="gvSearch" runat="server" AllowPaging="true" AutoGenerateColumns="False"
                    OnPageIndexChanging="grdLanguage_PageIndexChanging" OnSelectedIndexChanged="grdLanguage_SelectedIndexChanged"
                    >
                    <Columns>
<asp:BoundField DataField="Search" HeaderText="Language" SortExpression="SearchName" ItemStyle-HorizontalAlign="left" >
                            <ItemStyle HorizontalAlign="Left"></ItemStyle>
</asp:BoundField>
</Columns>
                </asp:GridView>
0
 
LVL 6

Expert Comment

by:havj123
ID: 24128647
The better way is to use dataset instead of datareader to fill a gridview.

I think the problem is in the quesry

"SELECT * FROM [tblTopics] WHERE [tblTopics.TopicSubject] = @TopicSubject"
0
 

Expert Comment

by:apramod
ID: 24128733
Even though if you use dataset to bind to gridview you need to bind the colums to gridview by using "BoundField" where you will bind the columns you want to see in grid, without that you will not see the columns.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

I see at least one EE question a week that pertains to using temporary tables in MS Access.  But surprisingly, I was unable to find a single article devoted solely to this topic. I don’t intend to describe all of the uses of temporary tables in t…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.
In Microsoft Access, when working with VBA, learn some techniques for writing readable and easily maintained code.

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now