0

2つのデータバインドされたドロップダウンリストがあります。

if (!IsPostBack)
    {
        ddlSelectProgram.DataSource = new PEIATableAdapters.programTableAdapter().GetData();
        ddlSelectProgram.DataBind();

        ddlSelectSurveyType.DataSource = new PEIATableAdapters.ParticpantSurveyFormIDsTableAdapter().GetFormIDsByProgramID(ProgramID);
        ddlSelectSurveyType.DataBind();

        BindData();
    }

ページが読み込まれると、BindDataの呼び出しでgrdResultsが正しく入力されます。

 private void BindData()
{
    PEIATableAdapters.ParticipantSurveysTableAdapter adapter = new PEIATableAdapters.ParticipantSurveysTableAdapter();

    grdResults.DataSource = adapter.GetDataByFormID(FormID);        
    grdResults.DataBind();
}

ただし、ページがポストバックされ、[送信]ボタンをクリックしてDataBindが再度呼び出された場合、ddlSelectProgramで選択された値は渡されません。[送信]ボタンのクリックイベントは単にDatabind()を呼び出しており、イベントが発生しています。

ProgramIDとFormIDのプロパティは次のとおりです。

protected int ProgramID
{
    get
    {
        return Convert.ToInt32(ddlSelectProgram.SelectedValue);
    }
    set
    {
        ddlSelectProgram.SelectedValue = value.ToString();
    }
}

protected int FormID
{
    get
    {
        return Convert.ToInt32(ddlSelectSurveyType.SelectedValue);
    }
    set
    {
        ddlSelectSurveyType.SelectedValue = value.ToString();
    }
}

ddl_SelectProgramが変更されたときにddlSelectSurveyTypeが変更されるように、2つのコントロールを結合するにはどうすればよいですか?

4

2 に答える 2

1

ページが読み込まれると、ddlSelectSurveyTypeのみが入力されます。次に、autoPostBackを使用して、ddlSelectSurveyTypeの値が変更されたときにイベントをキャッチします。次に、ProgramIDが選択されたことを確認したら、データを入力します。

于 2012-04-12T00:07:58.250 に答える
1

プロパティAutoPostBack="True"をマークアップのddlSelectProgramに追加し、コードビハインドのddlSelectProgramのSelectedIndexChangedイベントにイベントハンドラーを追加します。そのイベントでddlSelectSurveyTypeをバインドします。

于 2012-04-12T00:12:52.513 に答える