06. december 2005 - 13:33
Der er
19 kommentarer og 1 løsning
Skal sende indeholdet fra et GridView i en email
hvordan kan man sende indhold af database fra et datalist med email!? jeg har en gridview ------------------ id navn e-mail ------------------ 1 navn2 email 2 ------------------ 2 navn2 email 2 ------------------ 3 navn3 email 3 ------------------ kan jeg så vælge id nr.2 og sende indholdet med email?
Annonceindlæg fra Infor
06. december 2005 - 13:36
#1
du kan lave en knap og så sætte commandname til id.
06. december 2005 - 13:40
#2
jeg har lavet følgende: <asp:HyperLinkField Text="Send mail" DataNavigateUrlFields="id" DataNavigateUrlFormatString="ExpressMail.aspx?id={0}" /> og den viser oplysninger, MEN den viser altid id nr.1 det er lige meget om jeg klikker på id nr 2 eller 3 den viser altid nr 1
06. december 2005 - 13:42
#3
vis lige kode til hele gridview.
06. december 2005 - 13:46
#4
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="2" DataKeyNames="id" DataSourceID="AccessDataSource1" ForeColor="#333333" GridLines="None" AllowSorting="True" CellSpacing="1" HorizontalAlign="Left"> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <Columns> <asp:HyperLinkField Text="Send mail" DataNavigateUrlFields="id" DataNavigateUrlFormatString="ExpressMail.aspx?id={0}" /> <asp:CommandField ButtonType="Button" DeleteText=" Slet " ShowDeleteButton="True" /> <asp:BoundField DataField="id" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="id" /> <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" /> <asp:BoundField DataField="navn" HeaderText="navn" SortExpression="navn" /> <asp:BoundField DataField="e-mail" HeaderText="e-mail" SortExpression="e-mail" /> </Columns> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <EditRowStyle BackColor="#999999" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> </asp:GridView> <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/Mail.mdb" SelectCommand="SELECT * FROM [Mail]" DeleteCommand="DELETE FROM [Mail] WHERE [id] = @id"> <DeleteParameters> <asp:Parameter Type="Int32" Name="id"></asp:Parameter> </DeleteParameters> </asp:AccessDataSource>
06. december 2005 - 13:50
#5
og her bliver den vælgte oplysninger vist <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" DataKeyNames="id" DataSourceID="AccessDataSource1" Height="50px" Width="125px"> <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" /> <EditRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" /> <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" /> <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" /> <Fields> <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True" SortExpression="id" /> <asp:BoundField DataField="navn" HeaderText="navn" SortExpression="navn" /> <asp:BoundField DataField="e-mail" HeaderText="e-mail" SortExpression="e-mail" /> </Fields> <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" /> </asp:DetailsView> <br /> <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/Mail.mdb" SelectCommand="SELECT * FROM [Mail]"></asp:AccessDataSource>
06. december 2005 - 13:51
#6
prøv med: <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="2" DataKeyNames="id" DataSourceID="AccessDataSource1" ForeColor="#333333" GridLines="None" AllowSorting="True" CellSpacing="1" HorizontalAlign="Left"> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <Columns> <asp:TemplateField HeaderText="Send mail" HeaderStyle-BackColor="#D4DBE2" > <ItemTemplate> <a href=”ExpressMail.aspx?id=<%# Eval("id") %>”> Send mail </a> </ItemTemplate> </asp:TemplateField> <asp:CommandField ButtonType="Button" DeleteText=" Slet " ShowDeleteButton="True" /> <asp:BoundField DataField="id" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="id" /> <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" /> <asp:BoundField DataField="navn" HeaderText="navn" SortExpression="navn" /> <asp:BoundField DataField="e-mail" HeaderText="e-mail" SortExpression="e-mail" /> </Columns> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <EditRowStyle BackColor="#999999" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> </asp:GridView> <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/Mail.mdb" SelectCommand="SELECT * FROM [Mail]" DeleteCommand="DELETE FROM [Mail] WHERE [id] = @id"> <DeleteParameters> <asp:Parameter Type="Int32" Name="id"></asp:Parameter> </DeleteParameters> </asp:AccessDataSource>
06. december 2005 - 13:59
#7
nej, jeg kan se i statusbar at den viser rigtigt når jeg kører musen over. den viser altså ... ExpressMail.aspx?id=1 ... ExpressMail.aspx?id=2 ... ExpressMail.aspx?id=2 men når jeg trykker på linket send mail så viser den kun id 1
06. december 2005 - 14:03
#8
din SELECT * FROM [Mail] bruger slet ikke id til noget derfor viser den kun den første post. Det vil altid være id=1. Så du skal have den til at vælge SELECT * FROM [Mail] WHER ID = detindkommendeid.
06. december 2005 - 14:06
#9
altså SELECT * FROM [Mail] WHERE [id]=@id
06. december 2005 - 14:12
#10
prøv at bruge denne datasource: <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/Mail.mdb" SelectCommand="SELECT * FROM [Mail] WHERE [id] = @id" DeleteCommand="DELETE FROM [Mail] WHERE [id] = @id"> <SelectParameters> <asp:QueryStringParameter Type="Int32" QueryStringField="id" Name="id" /> </SelectParameters> <DeleteParameters> <asp:Parameter Type="Int32" Name="id"></asp:Parameter> </DeleteParameters> </asp:AccessDataSource>
06. december 2005 - 14:16
#11
yep nu virker det :) tak MEN nu til den anden spørgsmål hvordan sender jeg det valgte oplysninger med e-mail
06. december 2005 - 14:30
#12
du kan bruge denne kode i codebehind: try { //forsøg at sende email til bruger med password id System.Net.Mail.MailMessage mm = new System.Net.Mail.MailMessage("test@test.dk","test@dinemail.dk” ); mm.Subject = "et subject"; mm.Body = "en tekst” System.Net.Mail.SmtpClient sm = new System.Net.Mail.SmtpClient(); sm.Send(mm); } catch (Exception ex) { }
06. december 2005 - 14:31
#13
i din web.config fil skal du tilføje stien på din smtp server: <system.net> <mailSettings> <smtp> <network host="smtpserver.dk"/> </smtp> </mailSettings> </system.net>
06. december 2005 - 14:32
#14
koden til at sende e-mailen kan evt afvikles ved at trykke på en knap.
06. december 2005 - 15:06
#15
ja, jeg kan godt sende en e-mail fra asp.net men, hvordan får jeg oplysninger fra database med jeg går ud fra at oplysninger skal ind i mm.Body="" men hvordan får jeg "id=1" ind i mm.Body=""
06. december 2005 - 15:17
#16
du skal tilføje et ButtonField. <asp:ButtonField CommandName="Send" Text="Send" /> i dit detailsview tilføjer du OnItemCommand="Send_Email" i code behind filen tilføjer du protected void Send_Email(object sender, DetailsViewCommandEventArgs e) { } i den funktion skal du ligge din send mail. kommer mere om 2 sek...
06. december 2005 - 15:25
#17
send mail funktionionen kan se ud på denne måde: protected void Send_Email(object sender, DetailsViewCommandEventArgs e) { int index = Convert.ToInt32(e.CommandArgument); DetailsViewRow row = DetailsView1.Rows[index]; try { //forsøg at sende email til bruger med password id System.Net.Mail.MailMessage mm = new System.Net.Mail.MailMessage("test@test.dk","test@dinemail.dk” ); mm.Subject = "et subject" + row.Cells[1].Text; mm.Body = "en tekst"+ row.Cells[2].Text;; System.Net.Mail.SmtpClient sm = new System.Net.Mail.SmtpClient(); sm.Send(mm); } catch (Exception ex) { } }
06. december 2005 - 15:36
#18
jeg prøver det først imorgen mange tak for din hjælp, læg et svar (du fortjener mindst 100 pt. :) )
06. december 2005 - 15:37
#19
gør jeg :)
06. december 2005 - 15:41
#20
håber snart at jeg kommer til syne på den top 10 liste :)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.