-1

找了好久没找到,终于到了。。。

我正在成功地从数据库中动态创建一个 checkboxList。然后我想提交这些选择的检查项目,我无法访问。请找到代码....

protected void CreateCheckBoxListDynamically()
{
    DataTable dt = new DataTable();
    SqlConnection dBConnection = null;
    try
    {
        dBConnection = new SqlConnection();
        dBConnection.ConnectionString = ConfigurationManager.ConnectionStrings["***"].ConnectionString;
        SqlDataAdapter dataAdapter = new SqlDataAdapter();

        SqlCommand cmd = new SqlCommand("SP_GetDomesticCountryList", dBConnection);
        cmd.CommandType = CommandType.StoredProcedure;

        if (ddlTournamentType.SelectedValue != "Select" && ddlTournamentType.SelectedValue != "")
            cmd.Parameters.Add("@TournamentId", SqlDbType.Int).Value = Convert.ToInt32(ddlTournamentType.SelectedValue);
        else
            cmd.Parameters.Add("@TournamentId", SqlDbType.Int).Value = DBNull.Value;

        dBConnection.Open();
        dataAdapter.SelectCommand = cmd;
        dataAdapter.Fill(dt);

        if (dt.Rows.Count > 0)
        {

            CheckBoxList cblCountry = new CheckBoxList();
            cblCountry.ID = "cblCountryTeam";
            cblCountry.DataTextField = dt.Columns["CT_CountryTeamName"].ToString();
            cblCountry.DataValueField = dt.Columns["CT_CountryTeamId"].ToString();
            cblCountry.DataSource = dt;
            cblCountry.DataBind();

            //phCheckBoxList.Attributes.Add("class", "groupbox"); 
            phCheckBoxList.Controls.Add(cblCountry);
            phCheckBoxList.Controls.Add(new LiteralControl("<br />"));
        }

        dBConnection.Close();
    }
    catch (Exception Ex)
    {
        throw Ex;
    }
    finally
    {
        // Close data reader object and database connection
        if (dBConnection.State == ConnectionState.Open)
            dBConnection.Close();
    }
}

protected void btnInsert_Click(object sender, EventArgs e)
{
    SqlCommand cmd = null;
    SqlConnection dBConnection = new SqlConnection();
    SqlDataAdapter dataAdapter = new SqlDataAdapter();
    string countryTeamIds = "";
    try
    {
        dBConnection.ConnectionString = ConfigurationManager.ConnectionStrings["***"].ConnectionString;

        cmd = new SqlCommand("SP_AddNewSeries", dBConnection);
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Add("@MemberId", SqlDbType.Int).Value = memberId;

        if (ddlTournamentType.SelectedValue != "Select")
            cmd.Parameters.Add("@TournamentId", SqlDbType.Int).Value = Convert.ToInt32(ddlTournamentType.SelectedValue);
        else
            cmd.Parameters.Add("@TournamentId", SqlDbType.Int).Value = DBNull.Value;

        if (!string.IsNullOrEmpty(txtSeriesStartDate.Text))
            cmd.Parameters.Add("@SeriesStartDate", SqlDbType.Date).Value = Convert.ToDateTime(txtSeriesStartDate.Text);
        else
            cmd.Parameters.Add("@SeriesStartDate", SqlDbType.Date).Value = DBNull.Value;

        if (!string.IsNullOrEmpty(txtSeriesEndDate.Text))
            cmd.Parameters.Add("@SeriesEndDate", SqlDbType.Date).Value = Convert.ToDateTime(txtSeriesEndDate.Text);
        else
            cmd.Parameters.Add("@SeriesEndDate", SqlDbType.Date).Value = DBNull.Value;

        // get values from dynamic controls
        CheckBoxList cb = (CheckBoxList)phCheckBoxList.FindControl("cblCountryTeam");
        if (cb != null)
        {
            foreach (ListItem li in cb.Items)
            {
                if (li.Selected)
                    countryTeamIds += li.Value + "~";
            }
        }

        if (!string.IsNullOrEmpty(countryTeamIds))
            cmd.Parameters.Add("@CountryTeamIds", SqlDbType.NVarChar).Value = countryTeamIds;
        else
            cmd.Parameters.Add("@CountryTeamIds", SqlDbType.NVarChar).Value = DBNull.Value;

        dBConnection.Open();

        dataAdapter.InsertCommand = cmd;
        int i = cmd.ExecuteNonQuery();

        //hdnseriesId.Value = cmd.Parameters["@SeriesId"].Value.ToString();

        if (i == 0)
        {
            msgNoRecords.Visible = true;
        }
        else
        {
            msgNoRecords.Visible = false;
            //Response.Redirect("~/country.aspx", false);
        }

        dBConnection.Close();
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        // Close data reader object and database connection
        cmd.Dispose();
        cmd = null;
        if (dBConnection.State == ConnectionState.Open)
            dBConnection.Close();
    }
}
4

1 回答 1

0

根据您在 aspx 页面中创建的代码详细信息对象 phCheckBoxList。如果我是对的,那么这将在服务器端添加复选框产生问题。

为什么不只在服务器端创建复选框而不是 checkboxLIST。创建复选框后,您可以添加 is <div>(这必须在 aspx 页面中声明)。这<div>应该有一个 ID 并制作它,runat="server"这样你就可以得到它。

完成上述任务后,您可以在服务器端代码中轻松找到该 div 中的每个复选框。

于 2012-12-25T08:59:39.653 回答