доступ к элементам управления внутри списка данных - PullRequest
1 голос
/ 01 января 2012

Я создаю список данных с RadioButtonList внутри в качестве оценочной шкалы для каждого сообщения, отображаемого в списке данных, однако, когда я оцениваю один пост, все остальные посты оцениваются одинаково, подскажите, в чем проблема, спасибо. PS: я знаю, что проблема в цикле foreach, кто бы я ни удалил, я не смогу получить доступ к RadioButtonList или postIDLabel

protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) {
  foreach (DataListItem item in DataList2.Items) {
    RadioButtonList RadioButtonList1=(RadioButtonList)item.FindControl("RadioButtonList1");
    string choice = RadioButtonList1.SelectedValue;

    Label post_IDLabel = (Label)item.FindControl("post_IDLabel");
    int post_ID = Convert.ToInt32(post_IDLabel.Text);
    int value = Convert.ToInt32(choice);

    string connStr = ConfigurationManager.ConnectionStrings["MyDbConn"].ToString();
    SqlConnection conn = new SqlConnection(connStr);

    SqlCommand cmd = new SqlCommand("rate", conn);
    cmd.CommandType = CommandType.StoredProcedure;
    string email = Session["email"].ToString();
    int course_ID = Convert.ToInt32(Request.QueryString["courseID"]);
    cmd.Parameters.Add(new SqlParameter("@course_ID", course_ID));
    cmd.Parameters.Add(new SqlParameter("@postID", post_ID));
    cmd.Parameters.Add(new SqlParameter("@myemail", email));
    cmd.Parameters.Add(new SqlParameter("@rate", value));

    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();

    Response.Write(choice);
  }
  DataList2.DataBind();
}

1 Ответ

2 голосов
/ 01 января 2012

Используйте NamingContainer для получения DataListItem.

protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
{
 RadioButtonList rad = sender as RadioButtonList;
 DataListItem item = rad.NamingContainer as DataListItem;
 Label lab = item.FindControl("postIDLabel") as Label ;
 Response.Write(lab.Text);
}
...