asp.net 2.0中用 ICallbackEventHandler 实现无刷新联动

  
vs2005beta2 中通过

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>Untitled Page</title>
    
<script>
     
function ClientCallback(result, context) 

     
var dropdown2 = document.forms[0].elements['DropDownList2']; 
      dropdown2.innerHTML
= ""
      
var rows = result.split('|');
       alert(result.length); 
      
for (var i = 0; i < rows.length - 1++i) 
      

         
var values = rows[i] 
         
var option = document.createElement("OPTION"); 
         
         option.value 
= values; 
         option.innerHTML 
= values;     
         dropdown2.appendChild(option); 
      }
 
}
 
 
function GetOrders(arg, context)
 
{
  
<%= callBack %> ;
 }

 

    
</script>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:pubsConnectionString2 %>" SelectCommand="SELECT [au_id], [au_lname], [au_fname] FROM [authors]">
        
</asp:SqlDataSource>
        
<asp:DropDownList ID="DropDownList1"  runat="server">
        
</asp:DropDownList>
        
<asp:DropDownList ID="DropDownList2" runat="server">
        
</asp:DropDownList></div>
    
</form>
</body>
</html>


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class Default2 : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
if (!this.IsPostBack)
        
{
            
this.DropDownList1.DataSource = this.SqlDataSource1;
            
this.DropDownList1.DataTextField = "au_lname";
            
this.DropDownList1.DataValueField = "au_id";
            
this.DropDownList1.DataBind();
            
this.DropDownList1.Attributes.Add("onchange""GetOrders(this.options[this.selectedIndex].value,'bbbbb');");



        }



      



    }

    
protected String callBack
    
{
        
get
        
{
            
return this.ClientScript.GetCallbackEventReference(this"arg""ClientCallback""context");
        }

    }




    
public string  RaiseCallbackEvent(string eventArgument)
    
{
        DataSet ds 
= new DataSet();
        SqlConnection cnn
=new SqlConnection ("Data Source=JKDL-PORTAL;Initial Catalog=pubs;Persist Security Info=True;User ID=sa;Password=111" );

        SqlDataAdapter da 
= new SqlDataAdapter("select titles.title_id,title from titles inner join titleauthor on titleauthor.title_id = titles.title_id where au_id = '" + eventArgument + "'", cnn);
       cnn.Open ();

        da.Fill(ds);
   
        System.Text.StringBuilder str 
= new System.Text.StringBuilder();
       
foreach (DataRow dr in ds.Tables[0].Rows)
       
{
            str.Append(dr[
"title"]);


       
            str.Append(
"|");
            


        }

        
return str.ToString ();

    }



 

}


呵..... 越来越好了....

参考 
http://www.extremeexperts.com/Net/Articles/ClientCallbacksinASPNETWhidbey.aspx

posted on 2005-08-04 16:10  gwazy  阅读(906)  评论(3编辑  收藏  举报

导航