lelle2Medlem sedan feb. 20052 inlägg
Nybörjare som man är, så har jag i alla fall lärt mig hur jag plockar ut förvalt värde ur en databas och visar det i en datagrid.
Nu har jag börjat bråka med en DataTable och finner inget vettigt som kan hjälpa mig i min asp.net bok, så jag förstår hur det funkar.
Detta exempel skriver ut alla värden på skärmen från ett e-postmeddelande utan att jag använder en asp:datagrid i bodyn.
Denna kod fungerar alldeles ypperligt.
Dim dtMsg As DataTable = pop.MessageTable()
pop.Disconnect()
Dim MyDataGrid As New DataGrid()
MyDataGrid.DataSource = dtMsg
MyDataGrid.DataBind()
Page.Controls.Add(MyDataGrid)
MEN! Hur skriver jag ovanståend kod så att jag kan välja i en asp:datagrid vilka fält jag vill visa (se nedan)
Till exempel vill jag bara visa subject, from och email.
<ASP:DataGrid
id="MyDataGrid"
runat="server"
Width="100%"
GridLines="Both"
ShowHeader="false"
ShowFooter="false"
CellPadding="2"
CellSpacing="0"
AutoGenerateColumns="false">
<Columns>
<asp:TemplateColumn HeaderText="Subject">
<ItemTemplate>
<%# Container.DataItem("Subject") %>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</ASP:DataGrid>
Vore lycklig om något asp.net guru kan förklara med lite kod hur jag får detta att funka.
m_soderlundMedlem sedan sep. 20024 733 inlägg
Varför använda dig av en DataGrid när en Repeater är resurssnålare? Denna kod ska vara i codebehind eller under <script runat="server">:
dim SQL as string = "SELECT subject,from,email FROM tbl"
dim CnStr as string = "Provider=Microsoft.Jet.OLEDB.4.0; data source=" & Server.MapPath("db.mdb")
dim Cn as new OleDbConnection(CnStr)
dim Cm as new OleDbCommand(SQL,Cn)
dim dbRead As OleDbDataReader
Cn.Open()
dbRead = Cm.ExecuteReader()
'vi har en repeater på sidan som denna kod är kopplad till
'repeatern heter show_data
show_data.DataSource = dbRead
show_data.DataBind()
dbRead.Close()
Cn.Close()
Så här ska repeatern se ut:
<asp:repeater id="show_data" runat="server">
<ItemTemplate>
Subject: <%# DataBinder.Eval(Container.DataItem,"subject") %>
<br />From: <%# DataBinder.Eval(Container.DataItem,"from") %>
<br />Email: <%# DataBinder.Eval(Container.DataItem,"email") %>
</ItemTemplate>
</asp:repeater>
Välkommen till webForum, förresten! :bire
lelle2Medlem sedan feb. 20052 inlägg
pop3 komponent
Jag var nog lite otydlig.
Jag hämtar det inte från en databas utan från en email server via en pop3 komponent.
Det finns enligt hjälpfilen 2 sätt att hämta meddelandet. Via "Headers into a DataTable" eller "Headers as an ArrayList"
Jag använder nu via en arraylist men vill ta det via DataTable.
Men jag får bara ut alla fält, jag vill kunna välja via en reader eller en grid vilka fält från e´postmeddelandet jag ska visa..
Så här ser koden ut klippt från hjälpfilen:
'create a new pop3 object
Dim pop As New POP3("127.0.0.1", "dave@blah.com", "mypassword")
'connect to the POP3 server
pop.Connect()
'get the messages 3-5 (includes message 3,4, and 5 ) as a DataTable
Dim dtMsg As DataTable = pop.MessageTable(3, 3)
'Close the POP3 Connection
pop.Disconnect()
'html encode the cells
Dim r As Integer
For r = 0 To dtMsg.Rows.Count - 1
'skip the first col because it's an Int32
Dim c As Integer
For c = 1 To dtMsg.Columns.Count - 1
Dim cellValue As String = dtMsg.Rows(r)(c).ToString()
dtMsg.Rows(r)(c) = "<pre>" + Server.HtmlEncode(cellValue) + "</pre>"
Next c
Next r
'display the DataTable in a DataGrid in an ASP.NET page
Dim dgMsg As New DataGrid()
dgMsg.DataSource = dtMsg
dgMsg.DataBind()
Page.Controls.Add(dgMsg)
Jag vill poängtera att jag är nybörjare och ej riktigt fått poletten neråt.