在模板里的DropDownList控件标签内,给控件指派事件OnSelectedIndexChanged=ddlxxx_SelectedIndexChanged.在后台编码使用以下代码获取该DropDownList的控件ID。
private int GetIndexFormClientID( Control control )
   {
      
int start = control.NamingContainer.ClientID.IndexOf( "_ctl" );
      start 
+= 4 ;
      
string sIndex = control.NamingContainer.ClientID.Substring( start );
      
int index = int.Parse( sIndex );
      index 
-= 1// zero base

      
return index;
}

      使用代码如下片断:
      webform页面代码片断:
<asp:dropdownlist id="ddlNameID" runat="server" OnSelectedIndexChanged="ddlxxx_SelectedIndexChanged"
                    Width
="100%" AutoPostBack="True"></asp:dropdownlist>
      codebehind代码片断:
 protected void ddlxxx_SelectedIndexChanged(object sender, System.EventArgs e)
{
        DropDownList ddlxxx 
= ( DropDownList)sender;

         
int index = this.GetIndexFormClientID( ddlxxx );

        
if( index > -1 )
     
{
             //more code line

            }
        
        }
      如果包含DropDownList控件的控件是DataGrid,那么在GetIndexFormClientID返绘值再减去1,如果是DataList和Repeater就不用。
      此方法在Vs2003下测试通过!vs2005就没测试过了
posted on 2006-09-18 13:53  分享 共赢  阅读(597)  评论(0编辑  收藏  举报