92 messaggi dal 27 aprile 2001
Ciao Comunity,
volevo sapere se procedo correttamente se avendo la necessità di creare una semplice DataGrid associata ad un DB:

<code>
<%@ Page Language="VB" %>
<script runat="server">

Function Autori() As System.Data.DataSet
Dim connectionString As String = "server='(local)'; trusted_connection=true; database='pubs'"
Dim dbConnection As System.Data.IDbConnection = New System.Data.SqlClient.SqlConnection(connectionString)

Dim queryString As String = "SELECT [authors].* FROM [authors]"
Dim dbCommand As System.Data.IDbCommand = New System.Data.SqlClient.SqlCommand
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection

Dim dataAdapter As System.Data.IDbDataAdapter = New System.Data.SqlClient.SqlDataAdapter
dataAdapter.SelectCommand = dbCommand
Dim dataSet As System.Data.DataSet = New System.Data.DataSet
dataAdapter.Fill(dataSet)

Return dataSet
End Function' Insert page code here
'

Sub DataGrid1_SelectedIndexChanged(sender As Object, e As EventArgs)
DataGrid1.DataSource = Autori()
DataGrid1.DataBind()
End Sub

Sub Page_Load(Sender AS Object, E AS EventArgs)
IF NOT Page.IsPostBack THEN
DataGrid1.DataSource = Autori()
DataGrid1.DataBind()
END IF
End Sub

</script>
<html>
<head>
</head>
<body>
<form runat="server">
<p>
<asp:Label id="Label1" runat="server">Titolo Tabella</asp:Label>
</p>
<p>
<asp:DataGrid id="DataGrid1" runat="server" BorderStyle="None" GridLines="Vertical" BorderWidth="1px" BorderColor="#999999" BackColor="White" CellPadding="3" OnSelectedIndexChanged="DataGrid1_SelectedIndexChanged">
<FooterStyle forecolor="Black" backcolor="#CCCCCC"></FooterStyle>
<HeaderStyle font-bold="True" forecolor="White" backcolor="#000084"></HeaderStyle>
<PagerStyle horizontalalign="Center" forecolor="Black" backcolor="#999999" mode="NumericPages"></PagerStyle>
<SelectedItemStyle font-bold="True" forecolor="White" backcolor="#008A8C"></SelectedItemStyle>
<AlternatingItemStyle backcolor="#DCDCDC"></AlternatingItemStyle>
<ItemStyle forecolor="Black" backcolor="#EEEEEE"></ItemStyle>
</asp:DataGrid>
</p>
</form>
</body>
</html>
</code>

In verità il dubbio che ho sta in questo punto:
<code>
Sub DataGrid1_SelectedIndexChanged(sender As Object, e As EventArgs)
DataGrid1.DataSource = Autori()
DataGrid1.DataBind()
End Sub
</code>

Devo necessariamente creare la SUB DataGrid1_SelectedIndexChanged per associare la DataGrid1 ad Autori() oppure potevo semplicemente associarla nel Page_Load?

Cetalfio
Va bene così,, associa la sorgente e fai il databinding solo quando serve. Anche il solo associare la sorgente non va bene perché non sempre devi ricaricare il datagrid, ci sono anche altri postback non scatenati dal datagrid nella pagina.
Magari metti
DataGrid1.DataSource = Autori()
DataGrid1.DataBind()

in una funzione che richiami così fai ancora prima.

Ciao

Il mio blog
Homepage
Ciao scusa ma io non amo molto e conosco poco vb....
cmq il problema sta nel metodo, o per voi vubbisti sub :-), DataGrid1_SelectedIndexChanged

devi scriverlo così:
<code>
protected void Grid_Change(Object sender, DataGridPageChangedEventArgs e) {

// Set CurrentPageIndex to the page the user clicked.
DataGrid1.CurrentPageIndex = e.NewPageIndex;

// Rebind the data.
DataGrid1.DataSource = CreateDataSource();
DataGrid1.DataBind();

}

</code>
ovvimnete devi convertirlo in VB o convertirti tu al C#(scelta consigliata)

in ogni caso l'esempio è sull'msdn se vai a vedere la proprietà AllowPagining del DataGrid

ciao
se la richiami quando quando si scatane un evento (EventArgs lascia intendere di si :)) va benissimo la sub se lo fai sempre a prescindere dall'imput dell'utente lo puoi mettere nel pageload

xiaaooz

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
ops scusa...ma evidentemente stavo ancora dormendo.... non mi sono accorto che il dubbio era sul OnSelectedIndexChanged

Direi che il codcie è corretto.... ma se non cambia nulla perchè rifare DataBind e reimpostre il DataSource?

Se, come scrive Ricciolo, ci sono più eventi legati che modificano più volte il DataGrid, metto il Databind nel PreRender


ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.