?
Solved

Bind data to a gridview using datareader

Posted on 2009-04-12
7
Medium Priority
?
3,103 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
  • 2
  • +1
7 Comments
 
LVL 143

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
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 143

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 500 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

Migrating Your Company's PCs

To keep pace with competitors, businesses must keep employees productive, and that means providing them with the latest technology. This document provides the tips and tricks you need to help you migrate an outdated PC fleet to new desktops, laptops, and tablets.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

It’s the first day of March, the weather is starting to warm up and the excitement of the upcoming St. Patrick’s Day holiday can be felt throughout the world.
You need to know the location of the Office templates folder, so that when you create new templates, they are saved to that location, and thus are available for selection when creating new documents.  The steps to find the Templates folder path are …
With Microsoft Access, learn how to specify relationships between tables and set various options on the relationship. Add the tables: Create the relationship: Decide if you’re going to set referential integrity: Decide if you want cascade upda…
In Microsoft Access, when working with VBA, learn some techniques for writing readable and easily maintained code.
Suggested Courses

764 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