webForumDet fria alternativet

Problem med nhibernate och gridview

4 svar · 365 visningar · startad av Compusa

CompusaMedlem sedan jan. 20023 327 inlägg
#1

Hej,
håller på att experimentera lite med ASP.NET och nhibernate, men har nu fått lite problem. Jag har en databas-tabell som heter User och jag har fått det att fungera med att lägga till användare. Nu skulle jag vilja hämta alla användare och från databasen och visa dessa på en aspx-sida med hjälp av gridview. Problemet är att min gridview aldrig visas, trots att listan innehåller element.

Users.aspx

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1">
            <Columns>
                <asp:BoundField DataField="UserName" HeaderText="UserName" SortExpression="UserName" />
                <asp:BoundField DataField="Password" HeaderText="Password" SortExpression="Password" />
                <asp:BoundField DataField="EmailAddress" HeaderText="EmailAddress" SortExpression="EmailAddress" />
                <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" />
                <asp:BoundField DataField="LastLogon" HeaderText="LastLogon" SortExpression="LastLogon" />
            </Columns>
        </asp:GridView>
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetAllUsers"
            TypeName="Joel.App_Code.TestUser"></asp:ObjectDataSource>

TestUser.cs

namespace Joel.App_Code
{
    public class TestUser
    {
        private Configuration cfg;
        private ISessionFactory factory;

        public IList<User> GetAllUsers()
        {
            Configuration cfg = new Configuration();
            cfg.Configure();
            ISessionFactory factory = cfg.BuildSessionFactory();
            ISession session = factory.OpenSession();
            ITransaction transaction = session.BeginTransaction();

            IList<User> userList = session.CreateCriteria(typeof(User)).List<User>();

            transaction.Commit();
            session.Close();

            return userList;
        }
    }
}

Jag har mer kod men jag tror att det är denna som är mest relevant. Om jag gör följande på min metod GetAllUsers så ser jag att den retunerar data:

TestUser tu = new TestUser();

foreach (User user in tu.GetAllUsers())
{
    System.Diagnostics.Debug.WriteLine(user.Id + " last logged in at " + user.LastLogon);
}

Frågan är varför min gridview inte fungerar? Den visas överhuvudtaget inte... Får ursäkta för eventuell ful-kod, är fortfarande i experiment-stadiet ;)

CompusaMedlem sedan jan. 20023 327 inlägg
#2

Löste det genom att flytta ut datakällan från min aspx fil till min code-behind-fil :)

emissionMedlem sedan dec. 19996 721 inlägg
#3

Jag hoppas att det är VÄLDIGT testartad kod. Att bygga Sessionfactory inne i koden på det sättet är direkt olämpligt :)

CompusaMedlem sedan jan. 20023 327 inlägg
#4

Japp I know, har precis installerat och vill testa lite snabbt, kommer naturligtvis inte göra så sedan :)

emissionMedlem sedan dec. 19996 721 inlägg
#5

Bra, då kan jag sova gott :)

180 ms totalt · 3 externa anrop · v20260731065814-full.102f7fcd
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
178 ms — hämta tråd, inlägg och bilagor (db)