Bind data to a gridview using datareader

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

NesteAsked:
Who is Participating?
 
apramodConnect With a Mentor Commented:
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
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
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
 
NesteAuthor Commented:
Cant make it work whit your code, the gridview is still empty when i click the button :(

Any ideas ?
0
Cloud Class® Course: Microsoft Exchange Server

The MCTS: Microsoft Exchange Server 2010 certification validates your skills in supporting the maintenance and administration of the Exchange servers in an enterprise environment. Learn everything you need to know with this course.

 
NesteAuthor Commented:
Please any help is more then welcome, i really need to have this done in 2 days...thanks

0
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
did you define the bound columns definitions in the gridview already?
0
 
havj123Commented:
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
 
apramodCommented:
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.