2008-11-20 9 views
0

J'utilise ASP.NET 2.0 et VS 2005. Je dois remplir une grille sur un panneau de mise à jour à partir d'un refcursor Oracle après que l'utilisateur clique sur un bouton. J'ai un exemple d'un autre projet, mais c'est assez compliqué. Existe-t-il un moyen facile d'afficher les données dans une grille dans un panneau de mise à jour? Nous ne voulons pas que les données soient affichées lors de la première ouverture de l'onglet, juste après que l'utilisateur ait cliqué sur un bouton.comment puis-je remplir la grille dans updatepanel de refcursor

TIA, Theresa

Répondre

0

Je poste un code ici parce que ce genre de choses est difficile à comprendre et à la recherche. Voici une façon simple de le faire en utilisant le fournisseur de données Microsoft Oracle (je préfère ODP.NET):

<%@ Page Language="C#" AutoEventWireup="true" %> 
<%@ Import Namespace="System.Data" %> 
<%@ Import Namespace="System.Data.OracleClient" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title>GridView w/ Oracle Ref Cursor</title> 
<style type="text/css"> 
    body {padding:25px;} 
    .Button1 {margin:35px 0;} 
</style> 
<script runat="server" type="text/C#"> 
    protected void Page_Load(object sender, EventArgs e) { 
    } 

    protected void Button1_Click(object sender, EventArgs e) { 
     var dataSet = new DataSet(); 
     // get connection string from web.config 
     var connStr = ConfigurationManager.ConnectionStrings["ConnStr1"].ConnectionString; 
     // create connection 
     using (var conn = new OracleConnection(connStr)) { 
      // create & define the parameter 
      var refCursorParam = new OracleParameter(); 
      refCursorParam.ParameterName = "RET"; 
      refCursorParam.OracleType = OracleType.Cursor; 
      refCursorParam.Direction = ParameterDirection.Output; 
      // create & define the command 
      var cmd = new OracleCommand(); 
      cmd.CommandText = "GET_ALL_EMPS"; 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Parameters.Add(refCursorParam); 
      cmd.Connection = conn; 
      // use data adapter to fill dataset 
      using (var adapter = new OracleDataAdapter(cmd)) 
       adapter.Fill(dataSet); 
     } 
     // set some gridview properties 
     GridView1.AllowPaging = true; 
     GridView1.PageSize = 5; 

     // bind dataset to grid 
     GridView1.DataSourceID = null; 
     var dv = dataSet.Tables[0].AsDataView(); 
     // save dataview to session so gridview can be re-bound later 
     Session["dataView"] = dv; 
     GridView1.DataSource = dv; 
     GridView1.DataBind(); 

     pCount.InnerText = "Total Row Count: " + dataSet.Tables[0].Rows.Count.ToString(); 

     // dispose of dataset 
     dataSet.Dispose(); 
    } 

    void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { 
     // get dataview from session 
     var dv = (DataView)Session["dataView"]; 
     GridView1.DataSource = dv; 
     GridView1.PageIndex = e.NewPageIndex; 
     GridView1.DataBind(); // re-bind data 
    } 
</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
<asp:ScriptManager ID="ScriptManager1" runat="server" /> 
<div> 
    <asp:UpdatePanel id="updatepanel1" runat="server"> 
     <ContentTemplate> 
      <asp:Button ID="Button1" 
       runat="server" 
       Text="Refresh GridView" 
       OnClick="Button1_Click" /> 
      <p id="pCount" runat="server" /> 
      <asp:GridView ID="GridView1" 
          runat="server" 
          OnPageIndexChanging="GridView1_PageIndexChanging" /> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</div> 
</form> 
</body> 
</html> 

essayer cela et laissez-moi savoir si vous avez des questions. voici quelques bonnes références:

-gabe

+0

Merci, Gabe! Ce code m'a envoyé dans la bonne direction et j'ai réussi à le faire fonctionner. – Theresa

+0

hey, c'est génial! Je suis content que cela a aidé. – gabe

Questions connexes