0

マスターページにドロップダウンリストとボタンがあり、ボタンをクリックすると、マスターページを継承する別のページ[results.aspx]にリダイレクトする必要があります。これは、ドロップダウンリストから選択されたアイテムに従ってデータをバインドするためのグリッドビューです。私がやろうとすると、スローされます

NullPointerException [オブジェクト参照がオブジェクトのインスタンスに設定されていません]

これで私を助けてください。

これは、 results.aspx.cs のページ読み込みイベントで行ったことです:

SqlConnection scon = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Database.mdf;Integrated Security=True;User Instance=True");
protected void Page_Load(object sender, EventArgs e)
{
    if (Page.PreviousPage != null)
    {
        DropDownList d1 = (DropDownList)Master.FindControl("DropDownList1");
        DropDownList d2 = (DropDownList)Master.FindControl("DropDownList2");
        DropDownList d3 = (DropDownList)Master.FindControl("DropDownList3");
        SqlCommand scmd = new SqlCommand("select * from dreg where dcity='" + d2.SelectedItem.Text.ToString() + "' && dbg='" + d3.SelectedItem.Text.ToString() + "'", scon);
        scmd.Connection = scon;
        scon.Open();
        SqlDataAdapter sad = new SqlDataAdapter(scmd);
        SqlCommandBuilder scb = new SqlCommandBuilder(sad);
        DataTable dTable = new DataTable();
        sad.Fill(dTable);
        GridView1.DataSource = dTable;
        GridView1.DataBind();
    }
}

.net が ID を自動的に変更するため、以前のページ コントロールがマスター ページ上にある場合、それを見つけることができないとどこかで聞いたことがあります。私に何ができる?

4

3 に答える 3

2

あなたはマスターページコントロールにアクセスしようとしているので、これを試してみる必要があります:

DropDownList d1 = (DropDownList)Master.FindControl("DropDownList1");
DropDownList d2 = (DropDownList)Master.FindControl("DropDownList2");
DropDownList d3 = (DropDownList)Master.FindControl("DropDownList3");
SqlCommand scmd = new SqlCommand("select * from dreg where dcity='" + d2.SelectedItem.Text.ToString() + "' && dbg='" + d3.SelectedItem.Text.ToString() + "'", scon);

マスターページコントロールにアクセスしているため。そのため、使用しないでください。代わりに、 Master Page Controlにアクセスpage.PreviousPageする必要があります。Master.FindControl

于 2013-04-03T09:48:08.660 に答える
0

ClientIDMode ="Static"、これをコントロールに設定すると、id は変更されません。

于 2013-04-03T09:37:14.453 に答える