ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ASPxComboBox

ASPxComboBox

原创 Linux操作系统 作者:fangqm 时间:2010-06-26 14:50:57 0 删除 编辑
后台代码:ASPxComboBox1.Text;得到当前选择的值
 ASPxComboBox1.Items.Add(new ListEditItem("aaa", "aaa"));
            ASPxComboBox1.Items.Add(new ListEditItem("bbb", "bbb"));可以动态添加显示项和对应值
 ASPxComboBox1.SelectedIndex = 0;设置当前选择项的索引
Convert.ToInt32( ASPxComboBox1.SelectedItem.Value);//获取当前选择项的值
Convert.ToString (this.ASPxComboBox_ver.SelectedItem.Text.Trim () );//获取TEXT
如果时间长,忘了怎么用,先在ASPX中添加想要的,看看想要的是什么类型,然后再在后台中NEW一个即可\
 
在我的其他随笔里已经介绍了后台也就是服务端Dev系列控件的一些用法,接下来我介绍Dev系列控件在前台也就是客户端的一些常用方法介绍以及前后台异步通信的方法。

     一.Dev Data Edit控件通用属性以及方法:

    属性

    1.GetEnabled():返回控件是否为可操作状态

    2.GetText():返回控件的Text的值

    3.SetEnabled():设置控件状态

    4.GetValue():返回控件的Value

    5.SetValue():设置控件的Value

s.GetSelectedItem().value可能得到当前选中的值

   注意:在客户端进行Dev控件编程必须为Dev控件指定一个客户端的名称即ClientInstanceName,客户端直接根据ClientInstanceName来进行相关的操作。

简单例子:页面上一个ASPxComBox,一个ASPxLabel,一个ASPxButton.  当点击button按钮时,label显示aspxCombox当前选择的值

aspx:


   
   


   
                 EnableSynchronization="False" ClientInstanceName="devcbxChi"
            ValueType="System.String" >
       

                    nclick="ASPxButton1_Click" Text="ASPxButton">
       

   
   
  
   

   
   


C#

using DevExpress.Web.ASPxEditors;

  protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
        ASPxComboBox2.Items.Add(new ListEditItem("aa","aa"));
        ASPxComboBox2.Items.Add(new ListEditItem("bb", "bb"));
        ASPxComboBox2.SelectedIndex = 0;
       ASPxLabel1.Text= ASPxComboBox2.SelectedItem.ToString();
        }
       
    }

    protected void ASPxButton1_Click(object sender, EventArgs e)
    {
        ASPxLabel1.Text = ASPxComboBox2.SelectedItem.ToString();
    }

 

例子:ASPXComBox下拉框无刷新连动

在介绍这个例子之间,首先节点介绍下Dev的控件是如何

实现客户端,服务端异步通信的。

从客户端到服务端的通信:PerformCallback()。PerformCallback就是从客户端到服务端的桥梁,它是单向的只能从客户端发起到服务端。在PerformCallback()括号当中我们可以传递一些参数到服务器端,从而达到更新效果。

服务器端的接受并异步刷新:Callback()。当从服务端PerformCallback唤醒以后,响应的控件Callback事件开始执行(控件的服务器事件中可以找到)。

并且通过Parameter键值来获取从客户端传过来的值进行相关的处理。

客户端代码

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    
<title>PerTesttitle>
    
<script language="javascript" type="text/javascript">
    
//客户端处理下拉框选择项改变事件,client端aspxcombox下拉框改变事件为SelectedIndexChanged
    function OnEmployeesChanged(s){
    
//PerformCallback事件实际上时dev系列控件客户端服务器端异步通信的"大使",通过PerfromCallback事件
    
//将客户端的通信要求传递给服务端,在服务端通过控件的callback事件来接受相关参数并进行页面异步刷新
      devcbxChi.PerformCallback(s.GetValue());
    }
    
script>
head>
<body>
    
<form id="form1" runat="server">
    
<div>
    
<dxe:ASPxComboBox runat="server" ID="devcbxPar2" DropDownStyle="DropDownList" EnableIncrementalFiltering="True" 
                         EnableSynchronization
="False" ClientInstanceName="devcbxPar2" 
            Width
="160px">
                         
<ClientSideEvents SelectedIndexChanged="function(s, e) { OnEmployeesChanged(s); }">ClientSideEvents>
                     
dxe:ASPxComboBox>
   
      
<dxe:ASPxComboBox runat="server" ID="devcbxChi" DropDownStyle="DropDownList" EnableIncrementalFiltering="True" 
                         EnableSynchronization
="False" ClientInstanceName="devcbxChi" 
            Width
="160px" oncallback="devcbxChi_Callback">
                     
dxe:ASPxComboBox>  
    
div>
    
form>
body>
html>

服务器端using DevExpress.Web.ASPxEditors;

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["northwind"].ConnectionString);
    
protected void Page_Load(object sender, EventArgs e)
    {
        
if (!IsPostBack)
        {
            devcbxPar2.Items.Clear();
            
string selectSQL = "select EmployeeID,FirstName from Employees";
            SqlDataAdapter SDA 
= new SqlDataAdapter(selectSQL, conn);
            DataSet DS 
= new DataSet();
            SDA.Fill(DS);
            
for (int i = 0; i < DS.Tables[0].Rows.Count; i++)
            {
                devcbxPar2.Items.Add(
new ListEditItem(DS.Tables[0].Rows[i]["FirstName"].ToString().Trim(), DS.Tables[0].Rows[i]["EmployeeID"]
                    .ToString().Trim()));
            }
        }
    }
    
protected void devcbxChi_Callback(object source, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
    {
        
//得到从客户端传递过来的参数来进行异步通信响应
        string parm = e.Parameter.Trim();
        
string selectSQL = "select TerritoryID from EmployeeTerritories where EmployeeID='" + parm + "'";
        SqlDataAdapter SDA 
= new SqlDataAdapter(selectSQL, conn);
        DataSet DS 
= new DataSet();
        SDA.Fill(DS);
        devcbxChi.Items.Clear();
        
for (int i = 0; i < DS.Tables[0].Rows.Count; i++)
        {
            devcbxChi.Items.Add(DS.Tables[
0].Rows[i]["TerritoryID"].ToString().Trim());
        }
        devcbxChi.SelectedIndex 
= 0;
    }

OK,一个简单的异步刷新下拉框连动实现。那么思索下dev控件的异步通信,既然这么容易能实现从客户端服务端的异步刷新,那么要求再高点,

怎样通过服务端的发起来异步改变客户端的元素呢?我们把上面的程序稍微改下

<head runat="server">
    
<title>PerTesttitle>
    
<script language="javascript" type="text/javascript">
    
//客户端处理下拉框选择项改变事件,client端aspxcombox下拉框改变事件为SelectedIndexChanged
    function OnEmployeesChanged(s){
    
//PerformCallback事件实际上时dev系列控件客户端服务器端异步通信的"大使",通过PerfromCallback事件
    
//将客户端的通信要求传递给服务端,在服务端通过控件的callback事件来接受相关参数并进行页面异步刷新
      devcbxChi.PerformCallback(s.GetValue());
    }
    function onEndCallback(s,e){
    var result
=s.cp_result;
    txtresult.SetText(result);
    }
    
script>
head>
<body>
    
<form id="form1" runat="server">
    
<div>
    
<dxe:ASPxComboBox runat="server" ID="devcbxPar2" DropDownStyle="DropDownList" EnableIncrementalFiltering="True" 
                         EnableSynchronization
="False" ClientInstanceName="devcbxPar2" 
            Width
="160px">
                         
<ClientSideEvents SelectedIndexChanged="function(s, e) { OnEmployeesChanged(s); }">ClientSideEvents>
                     
dxe:ASPxComboBox>
   
      
<dxe:ASPxComboBox runat="server" ID="devcbxChi" EnableIncrementalFiltering="True" 
                         EnableSynchronization
="False" ClientInstanceName="devcbxChi" 
            Width
="160px" oncallback="devcbxChi_Callback" ValueType="System.String">
          
<ClientSideEvents EndCallback="function(s, e) {
    onEndCallback(s,e);
}
" />
                     dxe:ASPxComboBox>  
        
<dxe:ASPxTextBox ID="ASPxTextBox1" runat="server" Width="170px" 
            ClientInstanceName
="txtresult" ForeColor="Red">
        
dxe:ASPxTextBox>
    
div>
    
form>
body>

服务器端

protected void devcbxChi_Callback(object source, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
    {
        
//得到从客户端传递过来的参数来进行异步通信响应
        string parm = e.Parameter.Trim();
        
string selectSQL = "select TerritoryID from EmployeeTerritories where EmployeeID='" + parm + "'";
        SqlDataAdapter SDA 
= new SqlDataAdapter(selectSQL, conn);
        DataSet DS 
= new DataSet();
        SDA.Fill(DS);
        devcbxChi.Items.Clear();
        
for (int i = 0; i < DS.Tables[0].Rows.Count; i++)
        {
            devcbxChi.Items.Add(DS.Tables[
0].Rows[i]["TerritoryID"].ToString().Trim());
        }
        devcbxChi.SelectedIndex 
= 0;
        
//定义JSProperties参数值回传给客户端
        devcbxChi.JSProperties["cp_result"] = "更新成功";
    }

一个重要的属性JSProperties

JSProperties属性可以从服务端的参数传到客户端。我们可以定义很多个参数,但是在定义JSProperties属性的参数时,一定要记得参数的值以"cp"开头,以此来与Dev的基类区别开来。接下来我们在控件的客户端EndCallback()事件来接受JSProperties的参数来进行相关的设置。

     Dev的Data Edit相关控件的客户端编程也非常强大,让我们非常轻松的就可以实现异步通信。将Dev的客户端,服务端编程相结合,我们

的程序将效率更高,实现效果也更好

ASPxComboBox显示多列的方法
添加colums并设置其FieldName要绑定的字段名
关键是设置好 TextFormatString="{0}" 代表选择后显示在combobox里的值是第一个字段的值
ValueField="id" 数据源中的id,
 ValueType="System.String"值类型
 
实例
aspx
         TextFormatString="{0}" ValueField="id" ValueType="System.String">
        
            
            
            
        

    
 
c#
 void getVer()
    {
        fangqm.Netbank.Core.UpdateService upd = new UpdateService();
       DataTable dt= upd.SelectAllVerList();
       this.ASPxComboBox_ver.DataSource = dt.DefaultView;
       this.ASPxComboBox_ver.DataBind();
    
    }

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23109131/viewspace-666387/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: asp.net缓存
下一篇: ASPxCallback
请登录后发表评论 登录
全部评论
创业项目 https://u.rscode.cn

注册时间:2010-03-24

  • 博文量
    297
  • 访问量
    784644