ASP.. NET c# OnSelectedIndexChanged事件触发多个方法

本文关键字:方法 事件 NET OnSelectedIndexChanged ASP | 更新日期: 2023-09-27 18:16:56

我有这个asp DropDownList

<td>
<asp:DropDownList ID="ddlCategorySearch" runat="server" OnSelectedIndexChanged="ddlCategorySearch_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList><br />
<asp:DropDownList ID="ddlSubCategorySearch" runat="server" OnSelectedIndexChanged="ddlSubCategorySearch_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList>

我想用两个方法触发OnSelectedIndexChangedddlCategorySearch_SelectedIndexChangedddlSubCategorySearch_SelectedIndexChanged

因此,如果用户触发OnSelectedIndexChange,则会触发双值方法。

但是我解不出来,我该怎么做呢?

ASP.. NET c# OnSelectedIndexChanged事件触发多个方法

你的问题有点不清楚,但如果我理解正确,当用户改变类别值你想要触发两个事件?

您可以通过使用以下语法从主类别方法中显式调用子方法来实现这一点

ddlSubCategorySearch_SelectedIndexChanged(sender,e)

如果我误解了你的问题,请编辑它使它更清楚一点

编辑:根据你上面的评论,你不需要调用子ddl的selectedindex change来改变它的值。

您可以从类别下拉列表中选择dexchanged方法将数据源更改为过滤后的数据源。

如果您想要根据另一个下拉列表填充一个下拉列表,您可以使用如下命令:

public void ddlCategorySearch_SelectedIndexChanged(object sender, Eventargs e){
var param = ddlCategorySearch.SelectedValue;
foreach (var item in myList)//assuming you put the elements you want inside DDL in a list
if(item.ID == param)
ddlSubCategorySearch.Items.Add(new ListItem { Text="",Value=""}); //assign DDL elements here such as item.property
}
}

ddlCategorySearch_SelectedIndexChanged事件上为ddlSubCategorySearch填充DataSource,为此,您首先需要在页面加载时为ddlCategorySearch填充DataSource,如下所示。

protected void  protected void Page_Load(object sender, EventArgs e)
{
   if (!IsPostBack)
   {
      BindCategorySearch();
    }   
}
protected void BindCategorySearch()
{
    // Fill your ddlCategorySearch here. Write down your database logic to    
    //get a datasource for ddlCategorySearch 
}
protected void ddlCategorySearch_SelectedIndexChanged(object sender, EventArgs e) 
{
    try
    {
       BindSubCategory();
    }
    catch (Exception ex)
    {
    }
}
protected void BindSubCategory()
{
    try
    {
       int categoryID = Convert.ToInt32(ddlCategorySearch.SelectedValue);
       //Write down here your database logic to get datasource for 
       // ddlSubCategorySearch. For Example select * from SubCategory where 
       //CategoryID = categoryID
       List<SubCategory> listSubcategories = new List<SubCategory>();
       //Fill your listCategory on base of categoryID
       ListItem li = new ListItem();
       li.Text = "--Select Sub Category--";
       li.Value = "0";
       li.Selected = true;
       ddlSubCategories.Items.Insert(0, li);
    }
    catch (Exception ex)
    {
    }
 }

删除第二个下拉菜单选择索引更改和自动回发=false只使用第一个下拉选择索引更改事件

protected void  protected void Page_Load(object sender, EventArgs e)
    {
       if (!IsPostBack)
       {
          BindCategorySearch();
        }   
    }
    protected void BindCategorySearch()
    {
        // Fill your ddlCategorySearch here. Write down your database logic to    
        //get a datasource for ddlCategorySearch 
    }
    protected void ddlCategorySearch_SelectedIndexChanged(object sender, EventArgs e) 
    {
        try
        {
           BindSubCategory();
        }
        catch (Exception ex)
        {
        }
    }
    protected void BindSubCategory()
    {
        try
        {
           int categoryID = Convert.ToInt32(ddlCategorySearch.SelectedValue);
           //Write down here your database logic to get datasource for 
           // ddlSubCategorySearch. For Example select * from SubCategory where 
           //CategoryID = categoryID
           List<SubCategory> listSubcategories = new List<SubCategory>();
           //Fill your listCategory on base of categoryID
           ListItem li = new ListItem();
           li.Text = "--Select Sub Category--";
           li.Value = "0";
           li.Selected = true;
           ddlSubCategories.Items.Insert(0, li);
        }
        catch (Exception ex)
        {
        }
     }

您可以对这两个dropdown使用一个函数,检查哪个触发了事件并相应地执行操作。

protected void DualDropDown_SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList dropDownList = sender as DropDownList;
    if (dropDownList.ID == "ddlCategorySearch")
    {
        //do stuff if ddlCategorySearch fired the event
    }
    else
    {
        //do stuff if ddlSubCategorySearch fired the event
    }
}