"mandrake32" <mandrake32> wrote in message news:353709@...
Salve ragazzi...buona domenica a tutti...ho un problema su come passare un dato preso da un database access...In questo database ci sono Titolo,Testo,Data_ora...Ora a me mi si visualizza sulla Default.aspx il titolo ma vorrei passare ad un altra pagina News.aspx questo dato per aprire il testo...Insomma una lettura normale di una news...io sinceramente
non so più che cosa fare...
Potete aiutarmi voi?
Per favore
pagina Default.cs.aspx
protected void Page_Load(object sender, EventArgs e)
{
Connessione_Primaria();
}
public void Connessione_Primaria()
{
String ConnString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=" + Server.MapPath("App_Data/area2.mdb");
OleDbConnection cn = new OleDbConnection(ConnString); cn.Open();
String sql = "SELECT * FROM Privata2 ORDER BY Data_ora DESC"; System.Data.OleDb.OleDbCommand cmd = new OleDbCommand(sql, cn); System.Data.OleDb.OleDbDataReader rdr = cmd.ExecuteReader(); DataTable tabella = new DataTable("Privata2"); tabella.Load(rdr);
LinkButton1.Text = tabella.Rows[0]["Titolo"].ToString();
rdr.Close();
cn.Close();
}
pagina Default.aspx
<asp:LinkButton ID="LinkButton1" runat="server" Text=""
Font-Overline="false" Font-Underline="false"
PostBackUrl="News.aspx?ID=<%#ID %>"></asp:LinkButton>
Sta tutto nel form e div (riferimento Default.aspx)
pagina News.cs.aspx
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Params["ID"] != null)
{
String ConnString;
OleDbConnection cn;
OleDbCommand cmd;
OleDbDataReader rdr;
String sql;
ConnString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=" + Server.MapPath("App_Data/area2.mdb");
cn = new OleDbConnection(ConnString);
cn.Open();
sql = "SELECT ID,Titolo,Testo FROM Privata2 WHERE ID= " +
Request.Params["ID"];
cmd = new OleDbCommand(sql, cn);
rdr = cmd.ExecuteReader();
DataTable tabella = new DataTable("Privata2");
tabella.Load(rdr);
TextBox1.Text = tabella.Rows[0]["Titolo"].ToString();
TextBox2.Text = tabella.Rows[0]["Testo"].ToString();
}
else
{
TextBox1.Text = "Non ci sono notizie da visualizzare";
TextBox2.Text = "Non ci sono notizie da visualizzare";
}
pagina News.aspx
<tr>
<td valign="top" class="style3">
<asp:TextBox ID="TextBox1" runat="server" Width="718px"
Text=""></asp:TextBox>
</td>
</tr>
<tr>
<td valign="top">
<br />
<br />
<asp:TextBox ID="TextBox2" runat="server" Height="202px"
TextMode="MultiLine" Width="714px" Text=" "></asp:TextBox>
</td>
</tr>
Anche loro sono chiusi in form e div (riferimento News.aspx)
Ragazzi dove sbaglio?
Ciao,
nel tuo codice ci sono alcune cose di cui parlare, ma andiamo per gradi; anzitutto potresti impostare anche il PostBackUrl:
LinkButton1.Text = tabella.Rows[0]["Titolo"].ToString();
LinkButton1.PostBackUrl = String.Format("News.aspx?ID={0}", tabella.Rows[0]["ID"]);
Nel markup (Default.aspx), togli la sintassi:
<asp:LinkButton ID="LinkButton1" runat="server" Text="" Font-Overline="false" Font-Underline="false"
PostBackUrl="News.aspx?ID=<%#ID %>"></asp:LinkButton>
Il <%#ID %> si riferisce ad espressioni di data binding, e non è il tuo caso.
Non posso non dirti che tale approccio ti espone ad alcuni rischi: il parametro che inserisci direttamente nella query (quindi che fai eseguire sul d
proviene da una stringa descritta in querystring, quindi è alla mercè dell'utente che può inserirci caratteri dannosi per i dati stessi. Ti consiglio di dare un'occhiata qua:
http://www.aspitalia.com/articoli/asp.net2/aspnet-security.aspx,
http://www.aspitalia.com/articoli/asp.net2/aspnet-security-2.aspx .
Inoltre, il tuo approccio non è sbagliato, ma è molto asp classic oriented. In ASP.NET ci sono molti altri modi più "robusti" per fare quello che in gergo si chiama master-details. Prova a dare uno sguardo qua:
http://msdn.microsoft.com/en-us/library/tw738475(VS.80).aspx e se hai bisogno chiedi