Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117

    Duplicazione ed intestazione righe

    ciao a tutti, ho un problema

    ho creato dinamicamente un DataSet, recuperando dati da un DB ed incrociando righe e colonne, dato che la mia tabella contiene molte righe, visualizzo, ogni x righe l'intestazione...

    il mio problema è che vorrei visualizzare l'intestazione con lo stesso layout dell'intestazione del datagrid e non con il layout del testo contenuto nel datagrid

    posto il codice per essere piu chiara...

    // visualizzo l'intestazione ogni X righe...


    // duplico il datatable per creare le intestazioni ogni X righe

    DataTable StartPlanning = DsDati.Tables["Planning"];

    DataTable TmpPlanning = new DataTable();



    //creo la riga con tante colonne di tipo stringa quante il dt originario

    for (int i = 0; i < StartPlanning.Columns.Count; i++)

    {

    TmpPlanning.Columns.Add(StartPlanning.Columns[i].Caption, typeof(string));

    }

    //contatore righe stampate

    int c=0;

    //scansione delle righe del dt origirario per riempire il clone

    foreach (DataRow r in StartPlanning.Rows)

    {


    c++;

    if(c > k) //se ho superato le righe prefissate

    {

    c = 0; //azzero contatore

    DataRow dr1 = TmpPlanning.NewRow(); //creo una nuova riga di intestazione

    for (int i = 0; i < TmpPlanning.Columns.Count; i++)

    dr1[i] = TmpPlanning.Columns[i].Caption;

    //aggiungo la riga appena creata

    TmpPlanning.Rows.Add(dr1);

    c++;

    //creo una nuova riga

    DataRow dr2 = TmpPlanning.NewRow();

    //la riempio dei dati del dt originario, riga corrente

    for (int i = 0; i < TmpPlanning.Columns.Count; i++)



    if(i == 0)

    dr2[i] = string.Format("{0:d}", r[i]);

    else

    dr2[i] = r[i];

    //aggiungo la riga appena creata

    TmpPlanning.Rows.Add(dr2);

    }

    else

    //sono tra una intestazione e l'altra: aggiungo una riga di dati copiandoli dalla riga corrente del dt originario

    {

    DataRow dr2 = TmpPlanning.NewRow();

    for (int i = 0; i < TmpPlanning.Columns.Count; i++)

    if(i == 0)

    dr2[i] = string.Format("{0:d}", r[i]);

    else

    dr2[i] = r[i];

    TmpPlanning.Rows.Add(dr2);

    }

    //lego la griglia al dt clone creato

    MyDataGrid.DataSource = TmpPlanning.DefaultView;

    MyDataGrid.DataBind();





    come posso impostare il layout della riga creata


    Grazie per l'aiuto

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ma allora è il vecchio quesito? credevo fosse risolto da un pezzo

    comunque, nell'evento MyDataGrid_ItemDataBound, imposti lo stile per il parametro ricevuto, e

    ed il gioco è fatto :maLOL:

    Pietro

  3. #3
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    eggià vecchio quesito

    ma come imposo lo stile SOLO della riga che ho creato/aggiunto

    e dove lo imposto?

    grazie

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da valeria75
    eggià vecchio quesito

    ma come imposo lo stile SOLO della riga che ho creato/aggiunto

    e dove lo imposto?

    grazie
    questo è il codice che ho conservato. Naturalmente mi dirai che non funziona
    codice:
    <%@ Page language="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Inherits="prova_web_c_charp.WebForm2" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    	<HEAD>
    		<title>WebForm2</title>
    		<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    		<meta name="CODE_LANGUAGE" Content="C#">
    		<meta name="vs_defaultClientScript" content="JavaScript">
    		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    		<LINK href="Styles.css" type="text/css" rel="stylesheet">
    	</HEAD>
    	<body>
    		<form id="Form1" method="post" runat="server">
    			<asp:DataGrid id="MyDataGrid" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server"
    				BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="4"
    				OnItemDataBound="MyDataGrid_ItemDataBound">
    				<SelectedItemStyle Font-Bold="True" ForeColor="#CCFF99" BackColor="#009999"></SelectedItemStyle>
    				<ItemStyle ForeColor="#003399" BackColor="White"></ItemStyle>
    				<HeaderStyle Font-Bold="True" ForeColor="#CCCCFF" BackColor="#003399"></HeaderStyle>
    				<FooterStyle ForeColor="#003399" BackColor="#99CCCC"></FooterStyle>
    				<PagerStyle HorizontalAlign="Left" ForeColor="#003399" BackColor="#99CCCC" Mode="NumericPages"></PagerStyle>
    			</asp:DataGrid>
    		</form>
    	</body>
    </HTML>
    --------------------------------------------------------------------------------------------
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using lib = Libreria.ModuloWeb;
    
    namespace prova_web_c_charp
    {
    	/// <summary>
    	/// Descrizione di riepilogo per WebForm2.
    	/// </summary>
    	public class WebForm2 : System.Web.UI.Page
    	{
    		protected System.Web.UI.WebControls.DataGrid MyDataGrid;
    	
    		private void Page_Load(object sender, System.EventArgs e)
    		{
    			// Inserire qui il codice utente necessario per inizializzare la pagina.
    			
    
    			//datatable originario
    			DataTable StartPlanning = lib.GetDataTable(StringaConnessione(), "SELECT TOP 100 * FROM CAMPI ORDER BY [ID]");//DsDati.Tables["Planning"];
    			
    			// duplico il datatable per creare le intestazioni ogni X righe
    			DataTable TmpPlanning = new DataTable();
    
    			//creo la riga con tante colonne di tipo stringa quante il dt originario
    			for (int i = 0; i < StartPlanning.Columns.Count; i++)
    				TmpPlanning.Columns.Add(StartPlanning.Columns[i].Caption, typeof(string));
    			
    
    			int c = 0; //contatore righe stampate
    
    			
    			//scansione delle righe del dt origirario per riempire il clone
    			foreach (DataRow r in StartPlanning.Rows) 
    			{
    				c++;
    
    				if(c > k) //se ho superato le righe prefissate
    				{
    					c = 0; //azzero contatore
    
    					DataRow dr1 = TmpPlanning.NewRow(); //creo una nuova riga di intestazione
    
    					for (int i = 0; i < TmpPlanning.Columns.Count; i++)
    						dr1[i] = TmpPlanning.Columns[i].Caption;
    					
    					//aggiungo la riga appena creata
    					TmpPlanning.Rows.Add(dr1);
    
    
    					c++;
    
    					//creo una nuova riga
    					DataRow dr2 = TmpPlanning.NewRow();
    					//la riempio dei dati del dt originario, riga corrente
    					for (int i = 0; i < TmpPlanning.Columns.Count; i++)
    						if(i == 5)
    							dr2[i] = string.Format("{0:d}", r[i]);
    						else
    							dr2[i] = r[i];
    
    					
    					//aggiungo la riga appena creata
    					TmpPlanning.Rows.Add(dr2);
    
    				}
    
    				else 
    				//sono tra una intestazione e l'altra: aggiungo una riga di dati copiandoli dalla riga corrente del dt originario
    				{
    					DataRow dr2 = TmpPlanning.NewRow();
    
    					for (int i = 0; i < TmpPlanning.Columns.Count; i++)
    						if(i == 5)
    							dr2[i] = string.Format("{0:d}", r[i]);
    						else
                                dr2[i] = r[i];
    					
    					TmpPlanning.Rows.Add(dr2);
    
    				}
    
    			}
    			
    			//lego la griglia al dt clone creato
    			MyDataGrid.DataSource = TmpPlanning.DefaultView;
    			MyDataGrid.DataBind();
    
    		}
    
    		const int k = 5; //righe visualizzate tra una intestazione e l'altra
    		private int c = 0;
    		protected void MyDataGrid_ItemDataBound(object Sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    		{
    			if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    			{
    				c++;
    				if(c > k)
    				{
    					c = 0;
    					e.Item.Style.Add("background", "#009999");
    					e.Item.Style.Add("color", "#CCFF99");
    				}
    
    			}
    		}
    
    		private string StringaConnessione()
    		{
    			return "Provider=Microsoft.Jet.OLEDB.4.0;Password='';User ID=Admin;Data Source=C:\\DATI\\test\\test.mdb;Mode=Share Deny None;Extended Properties='';Jet OLEDB:System database='';Jet OLEDB:Registry Path='';Jet OLEDB:Database Password='';Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password='';Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False";
    		}
    
    
    		#region Codice generato da Progettazione Web Form
    		override protected void OnInit(EventArgs e)
    		{
    			//
    			// CODEGEN: questa chiamata è richiesta da Progettazione Web Form ASP.NET.
    			//
    			InitializeComponent();
    			base.OnInit(e);
    		}
    		
    		/// <summary>
    		/// Metodo necessario per il supporto della finestra di progettazione. Non modificare
    		/// il contenuto del metodo con l'editor di codice.
    		/// </summary>
    		private void InitializeComponent()
    		{    
    			this.Load += new System.EventHandler(this.Page_Load);
    
    		}
    		#endregion
    
    
    
    	}
    
    	
    
    }
    Pietro

  5. #5
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    e invece è perfetto!!!!



    graaaaazie

    ho aggiunto il codice che hai inserito nell'evento idemdatabound

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da valeria75
    e invece è perfetto!!!!



    graaaaazie

    ho aggiunto il codice che hai inserito nell'evento idemdatabound
    e va bene, non ne indovino una :maLOL: :rollo:

    Pietro

  7. #7
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    grazie ancora per l'aiuto

    non avevo pensato di "intercettare" la riga dell'item_databound pensavo di dover applicare la modifiche nel codice che generava il datatable!


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.