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;
}
{
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代码片断:
Width = " 100% " AutoPostBack = " True " ></ asp:dropdownlist >
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就不用。
{
DropDownList ddlxxx = ( DropDownList)sender;
int index = this.GetIndexFormClientID( ddlxxx );
if( index > -1 )
{
//more code line
}
}
此方法在Vs2003下测试通过!vs2005就没测试过了