webForumDet fria alternativet

Problem med nhibernate och gridview

.NETur .NET

4 svar · 365 visningar · startad av Compusa

Medlem sedan jan. 20023 327 inlägg
Frågan#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 ;)

Medlem 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 :)

Medlem 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 :)

Medlem 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 :)

Medlem sedan dec. 19996 721 inlägg
#5

Bra, då kan jag sova gott :)

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