在模板里的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就没测试过了
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>
protected void ddlxxx_SelectedIndexChanged(object sender, System.EventArgs e)
{
DropDownList ddlxxx = ( DropDownList)sender;
int index = this.GetIndexFormClientID( ddlxxx );
if( index > -1 )
{
//more code line
}
}此方法在Vs2003下测试通过!vs2005就没测试过了

浙公网安备 33010602011771号