protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
Table mytb = new Table();
mytb.Width = 1000;
mytb.BorderWidth =1;
string TYPE_ID = GridView1.SelectedValue.ToString();//课程类型(一级目录的id)
string[] strID=new string[5];//存放2级分类的id
string[] strTITLE=new string[5];//存放2级分类的title
string[] strk = new string[200];//
Int16 k=0;//统计dropdownlist的个数
Int16 i = 0;//二级目录的个数,循环变量
SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\PJS.mdf;Integrated Security=True;User Instance=True");//建立数据库连接con
SqlCommand com1 = new SqlCommand("SELECT COUNT(*) FROM PJ_STAND WHERE parents=@ID1", con);
com1.Parameters.Add("@ID1", TYPE_ID);
con.Open();//打开连接
Int16 count2 = 0;//定义二级分类的个数(即评教体系的个数)
count2 =Convert.ToInt16(com1.ExecuteScalar());
SqlCommand com2 = new SqlCommand("SELECT DISTINCT TITLE,ID FROM PJ_STAND WHERE PARENTS=@ID1", con);
com2.Parameters.Add("@ID1", TYPE_ID);
SqlDataReader DR = com2.ExecuteReader();
try
{
while(DR.Read())
{
strID[i] = DR["ID"].ToString();//把二级分类的ID存入strID[]数组
strTITLE[i] = DR["TITLE"].ToString();//把二级分类的TITLE存入数组strTITLE[]
i++;
}
}
finally
{
DR.Close();
}
for (; i > 0; i--) {
string[] gs = new string[20];
TableRow tr = new TableRow();//增加一行
TableCell tc = new TableCell();
tc.Text = strTITLE[i-1];//二级目录的title
tc.BorderWidth =1;
tr.Cells.Add(tc);
mytb.Rows.Add(tr);
SqlCommand comcount = new SqlCommand("SELECT COUNT(*) FROM PJ_STAND WHERE PARENTS=@IDCOUNT", con);
comcount.Parameters.Add("@IDCOUNT", strID[i - 1]);
Int16 count3 = Convert.ToInt16(comcount.ExecuteScalar());//取出二级目录下三级目录的个数存入count3变量
tc.RowSpan = (count3 + 1);//设置二级目录的跨行数目
SqlCommand com3 = new SqlCommand("SELECT DISTINCT TITLE,ID FROM PJ_STAND WHERE PARENTS=@ID1", con);
comcount.Parameters.Clear();//清除comcount的参数
com3.Parameters.Add("@ID1",strID[i-1]);//二级目录的id
SqlDataReader mydr = com3.ExecuteReader();
while (mydr.Read()) {
///////////////////////////////////////////////////////////////增加一个标题行存放三级目录
TableRow trr = new TableRow();
TableCell tcr = new TableCell();
tcr.Text = mydr["title"].ToString();
tcr.BorderWidth = 1;
trr.Cells.Add(tcr);
mytb.Rows.Add(trr);
////////////////////////////////////////////////增加一个空格里面放置dropdownlist
TableCell tcd = new TableCell();
tcd.BorderWidth = 1;
trr.Cells.Add(tcd);
string str = "";
if (tcr.Text!= str)//如果三级标题不为空的话执行加载dropdownlist
{
DropDownList ddl = new DropDownList();
Session[k.ToString()] = mydr["ID"].ToString();//把三级目录的id出入SESSION里面
ddl.ID = Session[k.ToString()].ToString();//对应的ddl的id号码为三级目录的id
k++;
Label1.Text += "id为:" +ddl.ID.ToString();//输出对应的ddl的id;
//Label1.Text += Session[k.ToString()].ToString();
ddl.Items.Add(new ListItem("1"));
ddl.Items.Add(new ListItem("2"));
ddl.Items.Add(new ListItem("3"));
ddl.Items.Add(new ListItem("4"));
ddl.Items.Add(new ListItem("5"));
ddl.Items.Add(new ListItem("6"));
ddl.Items.Add(new ListItem("7"));
ddl.Items.Add(new ListItem("8"));
ddl.Items.Add(new ListItem("9"));
ddl.Items.Add(new ListItem("10"));
tcd.Controls.Add(ddl );//加载ddl
}
}
mydr.Close();
PlaceHolder1.Controls.Add(mytb);//加载table mytb;
}
con.Close();//关闭连接
Session["count"] = k;//ddl的个数
Label1.Text += "一共有" + Session["count"] + "个记录";
} /// <summary>
/// //////////////////////////////////////////////////////////////
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
Int16 i = 0;//循环变量
string type_id = GridView1.SelectedValue.ToString();
//string stu_id = Session["studentID"].ToString();
string tea_id = GridView1.SelectedRow.Cells[1].ToString();
DateTime time = DateTime.Today;
Label1.Text = "";
Response.Write("一级目录id"+type_id);
for (; i <Convert.ToInt16(Session["count"]); i++) {
Label1.Text += "所选的id为:"+Session[i.ToString()];
string id = Session[i].ToString();
DropDownList d=PlaceHolder1.FindControl(id) as DropDownList;
Response.Write("呵呵"+id);
Response.Write(d.SelectedItem.ToString()); if (d != null)
{
Response.Write("true");
}
else { Response.Write("false");
}
}
}
明明创建了dropdownlist控件,为什么提示说:未将对象引用设置到对象的实例,why???
{
Table mytb = new Table();
mytb.Width = 1000;
mytb.BorderWidth =1;
string TYPE_ID = GridView1.SelectedValue.ToString();//课程类型(一级目录的id)
string[] strID=new string[5];//存放2级分类的id
string[] strTITLE=new string[5];//存放2级分类的title
string[] strk = new string[200];//
Int16 k=0;//统计dropdownlist的个数
Int16 i = 0;//二级目录的个数,循环变量
SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\PJS.mdf;Integrated Security=True;User Instance=True");//建立数据库连接con
SqlCommand com1 = new SqlCommand("SELECT COUNT(*) FROM PJ_STAND WHERE parents=@ID1", con);
com1.Parameters.Add("@ID1", TYPE_ID);
con.Open();//打开连接
Int16 count2 = 0;//定义二级分类的个数(即评教体系的个数)
count2 =Convert.ToInt16(com1.ExecuteScalar());
SqlCommand com2 = new SqlCommand("SELECT DISTINCT TITLE,ID FROM PJ_STAND WHERE PARENTS=@ID1", con);
com2.Parameters.Add("@ID1", TYPE_ID);
SqlDataReader DR = com2.ExecuteReader();
try
{
while(DR.Read())
{
strID[i] = DR["ID"].ToString();//把二级分类的ID存入strID[]数组
strTITLE[i] = DR["TITLE"].ToString();//把二级分类的TITLE存入数组strTITLE[]
i++;
}
}
finally
{
DR.Close();
}
for (; i > 0; i--) {
string[] gs = new string[20];
TableRow tr = new TableRow();//增加一行
TableCell tc = new TableCell();
tc.Text = strTITLE[i-1];//二级目录的title
tc.BorderWidth =1;
tr.Cells.Add(tc);
mytb.Rows.Add(tr);
SqlCommand comcount = new SqlCommand("SELECT COUNT(*) FROM PJ_STAND WHERE PARENTS=@IDCOUNT", con);
comcount.Parameters.Add("@IDCOUNT", strID[i - 1]);
Int16 count3 = Convert.ToInt16(comcount.ExecuteScalar());//取出二级目录下三级目录的个数存入count3变量
tc.RowSpan = (count3 + 1);//设置二级目录的跨行数目
SqlCommand com3 = new SqlCommand("SELECT DISTINCT TITLE,ID FROM PJ_STAND WHERE PARENTS=@ID1", con);
comcount.Parameters.Clear();//清除comcount的参数
com3.Parameters.Add("@ID1",strID[i-1]);//二级目录的id
SqlDataReader mydr = com3.ExecuteReader();
while (mydr.Read()) {
///////////////////////////////////////////////////////////////增加一个标题行存放三级目录
TableRow trr = new TableRow();
TableCell tcr = new TableCell();
tcr.Text = mydr["title"].ToString();
tcr.BorderWidth = 1;
trr.Cells.Add(tcr);
mytb.Rows.Add(trr);
////////////////////////////////////////////////增加一个空格里面放置dropdownlist
TableCell tcd = new TableCell();
tcd.BorderWidth = 1;
trr.Cells.Add(tcd);
string str = "";
if (tcr.Text!= str)//如果三级标题不为空的话执行加载dropdownlist
{
DropDownList ddl = new DropDownList();
Session[k.ToString()] = mydr["ID"].ToString();//把三级目录的id出入SESSION里面
ddl.ID = Session[k.ToString()].ToString();//对应的ddl的id号码为三级目录的id
k++;
Label1.Text += "id为:" +ddl.ID.ToString();//输出对应的ddl的id;
//Label1.Text += Session[k.ToString()].ToString();
ddl.Items.Add(new ListItem("1"));
ddl.Items.Add(new ListItem("2"));
ddl.Items.Add(new ListItem("3"));
ddl.Items.Add(new ListItem("4"));
ddl.Items.Add(new ListItem("5"));
ddl.Items.Add(new ListItem("6"));
ddl.Items.Add(new ListItem("7"));
ddl.Items.Add(new ListItem("8"));
ddl.Items.Add(new ListItem("9"));
ddl.Items.Add(new ListItem("10"));
tcd.Controls.Add(ddl );//加载ddl
}
}
mydr.Close();
PlaceHolder1.Controls.Add(mytb);//加载table mytb;
}
con.Close();//关闭连接
Session["count"] = k;//ddl的个数
Label1.Text += "一共有" + Session["count"] + "个记录";
} /// <summary>
/// //////////////////////////////////////////////////////////////
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
Int16 i = 0;//循环变量
string type_id = GridView1.SelectedValue.ToString();
//string stu_id = Session["studentID"].ToString();
string tea_id = GridView1.SelectedRow.Cells[1].ToString();
DateTime time = DateTime.Today;
Label1.Text = "";
Response.Write("一级目录id"+type_id);
for (; i <Convert.ToInt16(Session["count"]); i++) {
Label1.Text += "所选的id为:"+Session[i.ToString()];
string id = Session[i].ToString();
DropDownList d=PlaceHolder1.FindControl(id) as DropDownList;
Response.Write("呵呵"+id);
Response.Write(d.SelectedItem.ToString()); if (d != null)
{
Response.Write("true");
}
else { Response.Write("false");
}
}
}
明明创建了dropdownlist控件,为什么提示说:未将对象引用设置到对象的实例,why???
参照
http://xucanzhao.cnblogs.com/archive/2006/04/29/388514.html
http://xucanzhao.cnblogs.com/archive/2006/04/29/388517.html
hope useful!
......
PlaceHolder1.Controls.Add(mytb);//加载table mytb;
}
如果没有记录的情况下程序还能添加 DropDownList吗?而这个
protected void Button1_Click(object sender, EventArgs e){}
是不管你添加不添加它都要找,假设在没有记录的情况下,这个事件肯定要出除的,C#是类型安全的,你应该查找的时候判断下