1

ドロップダウンをデータセットにバインドする次のメソッドを作成しました。プロジェクトの別のページでこのメソッドを2回呼び出す必要があります。そこで、クラスを作成してその中にメソッドを配置し、オブジェクトを作成してこのメ​​ソッドにアクセスしようとしています。そうするのに問題があります...

 public void bind()
    {
        DataSet ds1 = new DataSet();
        SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]);
        con.Open();
        string strQuery = "SELECT CountryName + '(+' + CountryCode + ')' As CountryName,CountryCode from ACountry";
        SqlCommand cmd = new SqlCommand(strQuery, con);
        using (SqlDataAdapter da = new SqlDataAdapter(cmd))
        da.Fill(ds1, "AUser");
        ddlCountryCode.DataSource = ds1.Tables["AUser"];
        ddlCountryCode.DataTextField = "CountryCode";

        //ddlCountryCode.SelectedValue = "India(+91)";
        ddlCountryCode.DataBind();
        ddlCountryCode.SelectedIndex = ddlCountryCode.Items.IndexOf(ddlCountryCode.Items.FindByText("India(+91)"));
        con.Close();
    }

この完全なメソッドを新しいクラスで作成すると、そのメソッドで使用されているコントロール(ドロップダウンリスト)が認識されないため、エラーがスローされます。そのため、次の部分のみを含めました。

  public void bindddl()
    {
        DataSet ds1 = new DataSet();
        SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]);
        con.Open();
        string strQuery = "SELECT CountryName + '(+' + CountryCode + ')' As CountryName,CountryCode from ACountry";
        SqlCommand cmd = new SqlCommand(strQuery, con);
        using (SqlDataAdapter da = new SqlDataAdapter(cmd))
        da.Fill(ds1, "AUser");

        con.Close();
    }

これで、別のフォーム(.aspx)のドロップダウンリストにバインドする必要のあるデータセットが返されます。それ、どうやったら出来るの?

protected void Page_Load(object sender, EventArgs e)
    {
        Bind objbind = new Bind();
        ddlCountryCode.DataSource = objbind.---->?????????;
        ddlCountryCode.DataTextField = "CountryCode";

        //ddlCountryCode.SelectedValue = "India(+91)";
        ddlCountryCode.DataBind();
        ddlCountryCode.SelectedIndex = ddlCountryCode.Items.IndexOf(ddlCountryCode.Items.FindByText("India(+91)"));
    }

また、他に何ができますか?ここに別のより良いオプションはありますか?

4

1 に答える 1

1

関数がDataSetを返すようにしてから、それを必要なものに割り当てます

 public DataSet bindddl()
    {
        DataSet ds1 = new DataSet();
        SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]);
        con.Open();
        string strQuery = "SELECT CountryName + '(+' + CountryCode + ')' As CountryName,CountryCode from ACountry";
        SqlCommand cmd = new SqlCommand(strQuery, con);
        using (SqlDataAdapter da = new SqlDataAdapter(cmd))
        da.Fill(ds1, "AUser");

        con.Close();

        return ds1;
    }

次に、以下のように割り当てます。

Bind objbind = new Bind();
ddlCountryCode.DataSource = objbind.bindddl().Tables["AUser"];
于 2013-03-21T13:23:37.090 に答える