我有一个winform应用程序,其中我有一个要求读取由条件指定的特定列值。
这是我的C#代码
SqlCommand anc = new SqlCommand(); ;
anc.Connection = ad;
string s = "Sixth";
anc.CommandText = "Select Sub_Name from Subs_Master where Semester =@Sixth ";
anc.Parameters.AddWithValue("@Sixth", s);
anc.ExecuteNonQuery();
// SqlDataReader anw = anc.ExecuteReader();
SqlDataAdapter al = new SqlDataAdapter(anc);
DataSet dts = new DataSet();
al.Fill(dts);
DataTable dt = dts.Tables[0];
dataGridView1.DataSource = dt;
label9.Text = "Sixth";
foreach (DataRow drow in dt.Rows)
{
foreach (DataColumn Sub_Name in dt.Columns)
{
//
//{
radioButton3.Text = (drow[Sub_Name.ColumnName].ToString());
radioButton4.Text = (drow[Sub_Name.ColumnName].ToString());
radioButton5.Text = (drow[Sub_Name.ColumnName].ToString());
radioButton6.Text = (drow[Sub_Name.ColumnName].ToString());
radioButton7.Text = (drow[Sub_Name.ColumnName].ToString());
radioButton8.Text = (drow[Sub_Name.ColumnName].ToString());
}
这是对msdn演练的参考。
这是我的表格
现在我的问题是,当我只运行该列的最后一个值,即CA显示在所有单选框上时,但我希望每个单选框应该包含6个不同的值,例如radio3应该是Java ,收音机4应该是CIMD,收音机5应该是网络.. 有办法吗?或者我的查询错了。??
感谢你提前帮助..
答案 0 :(得分:1)
这是因为您为每一行设置了Text
的每个RadioButton
。最后,每个RadioButton
将显示分配的最后一个值,它来自每个值的最后一行。
您需要做的就是为每一行设置一个RadioButton
Text
属性,每次都需要不同的RadioButton
。要么只是长时间写出来,要么如果你想使用循环,将RadioButton
放在数组/集合中,然后使用for
循环而不是foreach
循环。这样,您可以使用循环计数器作为RadioButton
列表和Rows
的{{1}}的索引。
顺便说一句,摆脱那个内循环。它没有任何意义。您只使用一列中的数据,那么为什么要遍历所有列?
答案 1 :(得分:1)
不要做一个foreach。通过循环,您将每个单选按钮设置为第一个值,然后是第二个,然后是第三个..直到最后一个值。您想要使用索引。
这样的事情:
radioButton3.Text = dt.Rows[0]["SubName"]
radioButton4.Text = dt.Rows[1]["SubName"]
radioButton5.Text = dt.Rows[2]["SubName"]
正如@jmcilhinney所说,你的第二个foreach是没用的。摆脱他们两个。
答案 2 :(得分:0)
您正在设置具有相同值的所有单选按钮。尝试这样的事情。
int counter = 1;
foreach (DataRow drow in dt.Rows)
{
switch (counter)
{
case 1:
radioButton3.Text = drow["Sub_Name"].ToString();
break;
case 2:
radioButton4.Text = drow["Sub_Name"].ToString();
break;
default:
break;
}
counter++;
}
答案 3 :(得分:0)
您还可以通过
访问每个数据行的项目数组DataTable dt = new DataTable();
foreach(DataRow row in dt.Rows)
{
foreach(var cell in row.ItemArray)
{
}
}
答案 4 :(得分:0)
radioButton3.Text = dt.Rows[0]["Sub_Name"].ToString();
radioButton4.Text = dt.Rows[1]["Sub_Name"].ToString();
radioButton5.Text = dt.Rows[2]["Sub_Name"].ToString();
radioButton6.Text = dt.Rows[3]["Sub_Name"].ToString();
radioButton7.Text = dt.Rows[4]["Sub_Name"].ToString();
radioButton8.Text = dt.Rows[5]["Sub_Name"].ToString();