Ciao come ti aveva anticipato LiquidFly ti mancano due funzioni.
Non le ho postate perchè mi sembrava sottointeso che bisognava caricare tramite una funzione il dettaglio della news dal data base.
Cmq se ti interessa il codice completo che ho utilizzato ti posto tutta la pagina cominciando dalla struttura della tabella del data base. Poi tu adattala alla tua struttura.
Tabella news:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[news](
[id_news] [int] IDENTITY(1,1) NOT NULL,
[titolo] [nvarchar](400) NULL,
[id_categoria] [int] NULL,
[foto_news] [image] NULL,
[home] [bit] NULL,
[data_news] [datetime] NULL,
[testo] [image] NULL,
[DATE_ADD] [datetime] NULL,
[DATE_UPD] [datetime] NULL,
[USER_ADD] [int] NULL,
[USER_UPD] [int] NULL,
CONSTRAINT [PK_news] PRIMARY KEY CLUSTERED
(
[id_news] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[news] ADD CONSTRAINT [DF_news_home] DEFAULT ((0)) FOR [home]
GO
PS: DATE_ADD,DATE_UPD,USER_ADD,USER_UPD non ti servono. Io le uso dal punto di vista amministrativo per salvare date e utenti che inseriscono e aggiornano le news.
Gli altri:
id_news=è un contator ed è la chiave della tabella
titolo= è il titolo che viene associato alla news
id_categoria= è relazionato con la tabella categorie dove ci sono le squadre. a te potrebbe non servire.
foto_news=è la foto che viene associata alla news.Salvo il percorso non salva la foto nel data base.
home=è un booleano che mi indica se è una news che deve essere visualizzata nello slider della home page.
data_news: è la data che viene associata alla news
testo: testo html della news.
e adesso la pagina. io la posto tutta, tu ovviamente prendi solo la gridview e il formview con gli update panel:
<%@ page language="C#" autoeventwireup="true" inherits="ArchivioNews" CodeFile="ArchivioNews.aspx.cs" masterpagefile="Master/MasterPageCalcio_Pagine.master" maintainscrollpositiononpostback="true" validaterequest="false" %>
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolderPage_Titolo" runat="server">
<div runat="server" id="Div1">
<span class="titolo2">
<asp:Label ID="Titolo" CssClass="titolo2" runat="server" Text="Label">
</asp:Label>
</span>
</div>
</asp:Content>
<asp:Content ID="Corpo" ContentPlaceHolderID="ContentPlaceHolderPage_Corpo" runat="server">
<div runat="server" id="myform" style="padding-top:10px;">
<script language="javascript" type="text/javascript">
function SelectRowOver(rowID) {
if (document.getElementById(rowID).className != 'selectedgridrowstyleListNews') {
document.getElementById(rowID).className = 'selectedgridrowstyleListNewsOnMouseOver';
}
}
function UnSelectRowOver(rowID) {
if (document.getElementById(rowID).className != 'selectedgridrowstyleListNews') {
document.getElementById(rowID).className = 'gridrowstyleListNews';
}
}
</script>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<table class="BoxNews" width="600" >
<tr>
<td valign="top">
<asp:UpdatePanel ID="UpdatePanelFormsNews" runat="server">
<ContentTemplate>
<asp:UpdateProgress ID="UpdateProgressFormsNews" runat="server">
<ProgressTemplate>
<DIV id="IMGDIV"
align="center"
valign="middle" runat="server"
style="position: absolute;left: 20%; top: 80%; visibility:visible;vertical-align:middle;border-style:inset;border-color:black;background-color:White">
<img src="files/roller.gif" />Attendere prego...
</div>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:FormView ID="FormNews" runat="server" AllowPaging="True" runat="server"
onpageindexchanging="FormNews_PageIndexChanging" BorderStyle="None"
Width="400px" Height="273px" >
<ItemTemplate>
<asp:Label ID="id_news" Visible="false" runat="server" Text='<%# Bind("id_news") %>' ></asp:Label>
<asp:Label ID="Titolo" runat="server" CssClass="TitoloNews"
Text='<%# Bind("titolo") %>'></asp:Label>
<br />
<br />
<br />
<asp:Label ID="Testo" runat="server" CssClass="TestoNews"
Text='<%# Bind("TESTO_C") %>'></asp:Label>
<br />
</ItemTemplate>
<PagerSettings
Mode="NextPrevious"
NextPageText="Continua >>" PreviousPageText="Indietro <<"
Position="Bottom" />
<PagerStyle HorizontalAlign="Right" />
</asp:FormView>
</ContentTemplate>
</asp:UpdatePanel>
</td>
<td width="250" valign="top">
<p style=" font-size: 16px;
font-weight: bold;
font-family: Arial; font-style:italic;
color: #9A0000;" >Altre News</p>
<asp:UpdatePanel ID="UpdatePanelListNews" runat="server">
<ContentTemplate>
<asp:GridView ID="ListNews" runat="server"
AutoGenerateColumns="False"
CssClass="gridListNews" GridLines="None"
ShowFooter="False" ShowHeader="false" AllowPaging="true" PageSize="4"
onpageindexchanging="ListNews_PageIndexChanging"
onrowcreated="ListNews_RowCreated" onrowcommand="ListNews_RowCommand"
onselectedindexchanged="ListNews_SelectedIndexChanged" >
<FooterStyle CssClass="gridfooter" Height="25px" />
<RowStyle CssClass="gridrowstyleListNews" />
<SelectedRowStyle CssClass="selectedgridrowstyleListNews" />
<Columns>
<asp:TemplateField ItemStyle-CssClass="Padding10" >
<ItemTemplate>
<asp:Label ID="id_news" Visible="false" CssClass="DataNewsLista" runat="server" Text='<%# Bind("id_news") %>' ></asp:Label>
<asp:LinkButton ID="Categoria" CssClass="CategoriaNewsLista" runat="server" Text='<%# Bind("CATEGORIA") %>' CommandArgument='<%# Bind("id_news") %>'></asp:LinkButton><br />
<br />
<br />
<asp:LinkButton ID="DataNews" CssClass="DataNewsLista" runat="server" Text='<%# Bind("DATA") %>' CommandArgument='<%# Bind("id_news") %>'></asp:LinkButton>
<br />
<asp:LinkButton ID="Titolo" runat="server" CssClass="TitoloNewsLista"
Text='<%# Bind("titolo") %>' CommandArgument='<%# Bind("id_news") %>' ></asp:LinkButton></ItemTemplate><ItemStyle CssClass="gridrowstyleListNews" />
</asp:TemplateField>
</Columns>
<PagerSettings
Mode="NextPrevious"
NextPageText="Continua >>" PreviousPageText="Indietro <<"
Position="Bottom" />
<PagerStyle HorizontalAlign="Right" />
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</td>
</tr>
</table>
</div>
</asp:Content>
<asp:Content ID="Menu" ContentPlaceHolderID="ContentPlaceHolderPage_Menu" runat="server">
<div runat="server" id="SottoMenu">
</div>
</asp:Content>
e questo è il codice. anche qui se qualcosa non ti serve adattalo alle tue esigenze. Nel page_Load se vieni dalla home_page e hai selezionato una news carico direttamente quella altrimenti la prima della lista.
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Web.Security;
using System.Data;
using System.Data.Odbc;
public partial class ArchivioNews : System.Web.UI.Page
{
InterfaceDB idb = new InterfaceDB();
Generale gen = new Generale();
GestMenu menu = new GestMenu();
protected void Page_Load(object sender, EventArgs e)
{
int IDNews = -1;
for (int i = 0; i < Request.QueryString.Count; i++)
{
if (Request.QueryString.Keys[i] == "IDNews")
{
IDNews = Convert.ToInt16(Request.QueryString[i].ToString().Trim());
}
}
if (!Page.IsPostBack)
{
string MyCaricaNewsLista = CaricaNewsLista();
string MyCaricaNewsForm = CaricaNewsForm(IDNews);
}
}
#region Funzioni Private
private void Message(string messaggio)
{
Response.Write("<script>alert('" + messaggio.Replace("'", "") + "');</script>");
}
private string CaricaMenu(DataTable MyMenu)
{
string ContenutoSottoMenu = "";
string TitoloPage = "";
string Key = "NEWS";
try
{
string MyCaricaMenu = menu.CaricaMenu(MyMenu, ref ContenutoSottoMenu, ref TitoloPage, Key);
SottoMenu.Controls.Add(new LiteralControl(ContenutoSottoMenu));
Titolo.Text = TitoloPage;
}
catch (Exception ex)
{
return ex.Message;
}
return " ";
}
private string CaricaNewsForm(int IDNews)
{
// Carica le news nella lista di ricerca
string StrConn = "";
InterfaceDB.TypeConnection TypeConn = new InterfaceDB.TypeConnection();
try
{
idb.TypeSQL(ref TypeConn);
idb.ImpStrConn(ref StrConn);
}
catch (Exception ex)
{
return ex.Message;
}
DataTable DT = new DataTable();
try
{
string Select ="";
Select += "SELECT id_news,";
Select += " CAST((Day(data_news)) AS NVARCHAR ) + '.' + CAST((Month(data_news)) AS NVARCHAR ) + '.' + CAST((Year(data_news)) AS NVARCHAR ) AS DATA, ";
Select += " testo,titolo,(SELECT descrizione FROM categorie WHERE categorie.id_categoria=news.id_categoria) AS CATEGORIA";
Select += " FROM NEWS";
Select += " ORDER BY data_news DESC";
string MySelect = idb.Select(Select, ref DT);
if (MySelect.Trim().Length > 0) { throw new Exception(MySelect); }
DT.Columns.Add();
int coladd = DT.Columns.Count-1;
DT.Columns[coladd].ColumnName = "TESTO_C";
for (int i = 0; i < DT.Rows.Count; i++)
{
string Testo_News = System.Text.Encoding.Unicode.GetString((byte[])DT.Rows[i]["testo"]);
HtmlTextArea textareaTesto = new HtmlTextArea();
textareaTesto.ID = "TestoNews";
textareaTesto.InnerHtml = Testo_News;
DT.Rows[i][coladd] = textareaTesto.InnerText;
}
}
catch (Exception ex)
{
return ex.Message;
}
try
{
FormNews.DataSource = DT;
FormNews.DataBind();
}
catch (Exception ex)
{
return ex.Message;
}
//Se ho selezionato una news
try
{
if (IDNews != -1)
{
for (int i = 0; i < DT.Rows.Count;i++)
{
if (IDNews == Convert.ToInt16(DT.Rows[i]["id_news"]))
{
FormNews.PageIndex = i;
try
{
string carica = CaricaNewsForm(-1);
if (carica.Trim().Length > 0)
{
throw new Exception(carica);
}
}
catch (Exception ex)
{
Message(ex.Message);
}
}
}
}
}
catch(Exception ex)
{
return ex.Message;
}
//Se non ho selezionato una news
if (IDNews == -1)
{
try
{
int row = 0;
int rowlista = 0;
IDNews =Convert.ToInt16(((Label)FormNews.FindControl("id_news")).Text);
DataTable DTLista = new DataTable();
DTLista = (DataTable)Session["ListaNews"];
for (int i = 0; i < DTLista.Rows.Count; i++)
{
string id = DTLista.Rows[i]["id_news"].ToString();
if (Convert.ToInt16(id) == IDNews)
{
row = i;
break;
}
}
if (ListNews.PageCount > 0)
{
int intero = (row+1) / ListNews.PageSize;
int resto = (row+1) % ListNews.PageSize;
int pagina = intero;
if (resto == 0) { pagina--; }
ListNews.PageIndex = pagina;
try
{
string carica = CaricaNewsLista();
if (carica.Trim().Length > 0)
{
throw new Exception(carica);
}
}
catch (Exception ex)
{
Message(ex.Message);
}
bool trovato = false;
for (int i = 0; i < ListNews.Rows.Count; i++)
{
string id = ((Label)ListNews.Rows[i].FindControl("id_news")).Text;
if (Convert.ToInt16(id) == IDNews)
{
trovato = true;
rowlista = i;
break;
}
}
GridViewRow Riga = ListNews.Rows[rowlista];
Riga.CssClass = "selectedgridrowstyleListNews";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
return " ";
}
private string CaricaNewsLista()
{
// Carica le news nella lista di ricerca
string StrConn = "";
InterfaceDB.TypeConnection TypeConn = new InterfaceDB.TypeConnection();
try
{
idb.TypeSQL(ref TypeConn);
idb.ImpStrConn(ref StrConn);
}
catch (Exception ex)
{
return ex.Message;
}
DataTable DT = new DataTable();
try
{
string Select = "SELECT id_news,";
Select += " CAST((Day(data_news)) AS NVARCHAR ) + '.' + CAST((Month(data_news)) AS NVARCHAR ) + '.' + CAST((Year(data_news)) AS NVARCHAR ) AS DATA, ";
Select += " titolo,(SELECT descrizione FROM categorie WHERE categorie.id_categoria=news.id_categoria) AS CATEGORIA";
Select += " FROM NEWS";
Select += " ORDER BY data_news DESC";
string MySelect = idb.Select(Select, ref DT);
if (MySelect.Trim().Length > 0) { throw new Exception(MySelect); }
}
catch (Exception ex)
{
return ex.Message;
}
try
{
ListNews.DataSource = DT;
ListNews.DataBind();
Session["ListaNews"] = DT;
}
catch (Exception ex)
{
return ex.Message;
}
return " ";
}
#endregion
protected void FormNews_PageIndexChanging(object sender, FormViewPageEventArgs e)
{
FormNews.PageIndex = e.NewPageIndex;
try
{
string carica = CaricaNewsForm(-1);
if (carica.Trim().Length > 0)
{
throw new Exception(carica);
}
}
catch (Exception ex)
{
Message(ex.Message);
}
}
protected void ListNews_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
if (e.NewPageIndex == -1) { return; }
ListNews.PageIndex = e.NewPageIndex;
try
{
string carica = CaricaNewsLista();
if (carica.Trim().Length > 0)
{
throw new Exception(carica);
}
}
catch (Exception ex)
{
Message(ex.Message);
}
}
protected void ListNews_RowCreated(object sender, GridViewRowEventArgs e)
{
string rowID = String.Empty;
if (e.Row.RowType == DataControlRowType.DataRow)
{
rowID = "row" + e.Row.RowIndex;
e.Row.Attributes.Add("id", "row" + e.Row.RowIndex);
e.Row.Attributes.Add("onmouseover", "SelectRowOver(" + "'" + rowID + "'" + ")");
e.Row.Attributes.Add("onmouseout", "UnSelectRowOver(" + "'" + rowID + "'" + ")");
}
}
protected void ListNews_RowCommand(object sender, GridViewCommandEventArgs e)
{
int IDNews = 0;
try
{
IDNews = Convert.ToInt16(e.CommandArgument);
}
catch
{
return;
}
string carica = CaricaNewsForm(IDNews);
int row = 0;
for (int i = 0; i < ListNews.Rows.Count; i++)
{
string id = ((Label)ListNews.Rows[i].FindControl("id_news")).Text;
if ( Convert.ToInt16(id) == IDNews)
{
row = i;
break;
}
}
GridViewRow Riga = ListNews.Rows[row];
Riga.CssClass = "selectedgridrowstyleListNews";
ListNews_SelectedIndexChanged(sender, e);
}
protected void ListNews_SelectedIndexChanged(object sender, EventArgs e)
{
int i = 0;
}
}
Se hai bisogno di aiuto chiedi pure...