web-dev-qa-db-ja.com

ドロップダウンリストの選択されたインデックス変更イベントを手動で呼び出す

ページ読み込みイベントを埋めるドロップダウンがあります。

private void FillSponsor()
    {
        ddlSponsor.DataSource = Db.VCT_SPONSORs.Where(x => x.IS_ACTIVE.GetValueOrDefault() && x.IS_APPROVED.GetValueOrDefault());
        ddlSponsor.DataBind();
    }

今私が欲しいのは、他のドロップダウンを上記のドロップダウンの最初の値にバインドすることです。私の2番目のドロップダウンは次のとおりです。

protected void ddlSponsor_SelectedIndexChanged(object sender, EventArgs e)
    {
        ddlDivision.DataSource = Db.VCT_SPONSOR_DIVISIONs.Where(x => x.SPONSOR_ID==SponsorID);
        ddlDivision.DataBind();
        ddlDivision.Items.Insert(0, new ListItem("All", "0"));
    }

私の問題は、FillSponsorメソッドからddlSponsor_SelectedIndexChangedイベントを呼び出す方法です。私の両方のドロップダウンは更新パネルにあります。

11
Pankaj

メソッドをどのように呼び出すのですか?

ddlSponsor_SelectedIndexChanged(this, EventArgs.Empty);
23
TBohnen.jnr

代わりにDateBoundイベントを使用できます。お気に入り...

protected void ddlSponsor_DataBound(object sender, EventArgs e)
{
    ddlDivision.DataSource = Db.VCT_SPONSOR_DIVISIONs.Where(x => x.SPONSOR_ID==SponsorID);
    ddlDivision.DataBind();
    ddlDivision.Items.Insert(0, new ListItem("All", "0"));
}
1
Muhammad Akhtar

あなたの主な問題は、別々の更新パネルにコントロールがあることだと思います。

http://forums.asp.net/t/1426233.aspx

そのリンクからのコードサンプル:

<asp:UpdatePanel runat="server" ID='asdsd' UpdateMode="Conditional">
 <ContentTemplate>
    ...DropDownList1...
</ContentTemplate>

<Triggers>
    <asp:AsyncPostBackTrigger ControlID='DropDownList2' EventName='SelectedIndexChanged' />
</Triggers>

あなたが求めているのはAsyncPostBackTriggersだと思います。そして、UpdateMode = "Conditional"を忘れないでください。

0
Brian Webster