2012-12-25 1 views
-1
내가 많이 검색하고 실패하고 드디어 도착했습니다

...수 없습니다 동적

내가 성공적으로 데이터베이스에서 동적으로 checkboxList를 생성하고 생성됩니다 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(); 
    } 
} 
+0

오류를 받으셨습니까? – Karthik

+0

아니요 오류가 있지만 단추 클릭 이벤트에서 CheckBoxList cb가 null로 표시됩니다. –

답변

0

코드 세부 정보 객체별로 phCheckBoxList가 aspx 페이지에서 생성되었습니다. 맞다면 서버 측에 체크 박스를 추가하는데 문제가 생길 것입니다.

checkboxLIST 대신 서버 측에서만 확인란을 만들지 마십시오. 체크 박스를 작성한 후 <div> (aspx 페이지에서 선언해야 함)을 추가 할 수 있습니다. 이 <div>은 ID가 있어야하고 runat="server"이되어야합니다.

위 작업을 수행하면 서버 측 코드에서 해당 div의 모든 체크 박스를 쉽게 찾을 수 있습니다.

+0

예 Darshan ...이 문제를 해결하는 좋은 방법이 될 수 있지만 정확한 확인란 수를 모르겠습니다. 때로는 50 이상이 될 수도 있으므로 checkboxList를 선택했습니다. 네 말이 맞아, 내가 aspx 페이지에서 phCheckBoxList를 만들었습니다. –

+0

오 오케이 내가 정확한 문제를 가지고 있다고 생각해. 당신이 당신의 메소드'CreateCheckBoxListDynamically()'를 페이지로드 이벤트에서 호출 할 수있다. – Darshan

+0

실제로 CreateCheckBoxListDynamically()는 다른 드롭 다운을 기반으로하므로 dropdown_SelectedIndexChanged 함수에서 호출하고 있습니다 ... –

관련 문제