public int numrows=12;
protected void Page_Load(object sender, EventArgs e)
{
#region 本学期总周数
Table tb = (Table)Page.FindControl("tbCourse");
TeachDate _TeachDate = new TeachDate();
_TeachDate.Where.DefaultCurrent.Value = true;
_TeachDate.Where.DefaultCurrent.Operator = NanJingZhiFeng.DAO.WhereParameter.Operand.Equal;
_TeachDate.Query.Load();
if (_TeachDate.RowCount == 1)
{
numrows = _TeachDate.TeachWeeks;
}
int numcells = 4;
for (int i = 0; i < numrows; i++)
{
TableRow r = new TableRow();
for (int j = 0; j < numcells; j++)
{
TableCell c = new TableCell(); switch (j)
{
case 0:
c.Controls.Add(new LiteralControl((i + 1).ToString()));
break;
default:
c.Controls.Add(new LiteralControl(""));
break;
} r.Cells.Add(c); BindDrp(tbCourse, i, j);
}
tbCourse.Rows.Add(r);
}
#endregion
}
protected void BindDrp(Table tbCourse,int i,int j)//绑定Drp
{
DropDownList drp = new DropDownList();
drp.ID = i.ToString() + "-" + j.ToString();
BindCourse(drp, i, j);
drp.SelectedIndexChanged += new EventHandler(drp_SelectedIndexChanged);
drp.AutoPostBack = true;
drp.SelectedIndex = -1;
if (drp.Items.Count > 1)
{
tbCourse.Rows[i].Cells[j].Controls.Add(drp);
}
}
protected void BindCourse(DropDownList drp,int i,int j)//绑定实验
{
//i:周数 j:星期几
Course _Course = new Course();
_Course.Where.CreateDate.Value = "14a21ef8-d1d7-4b51-ba9a-3d0267172d60";
_Course.Where.CreateDate.Operator = NanJingZhiFeng.DAO.WhereParameter.Operand.Equal;
_Course.Query.AddOrderBy(Course.ColumnNames.CourseName, NanJingZhiFeng.DAO.WhereParameter.Dir.ASC);
_Course.Query.Load();
if(_Course.RowCount>0)
{
drp.Items.Insert(0, "取消选择");
DataTable dtCourse = _Course.DefaultView.Table;
foreach(DataRow drCourse in dtCourse.Rows)
{ if ((hfdHang.Value.Contains(i.ToString() + ",")))//隶属已选择行且不是本身
{
if (drp.ID.Substring(0, drp.ID.IndexOf("-")) == i.ToString())
{
if (hfdIndex.Value.Contains(drp.ID) == false)
{
drp.Enabled = false;
}
else
{
drp.Enabled = true;//一行只能选择一个
}
}
}
int week = int.Parse(drCourse["CreateUser"].ToString());//实验是星期几的
int lunci = int.Parse(drCourse["CourseCycle"].ToString());//实验轮次
int cell=(week+1)/2;
if ((i == 1) && (j == cell))
{
string coursename = drCourse["CourseName"].ToString().Substring(0, 8) + "...";
drp.Items.Add(new ListItem(coursename, drCourse["ID"].ToString()));
}
else if (i > 1)
{
if (((i - 1) % lunci == 0)&&(j == cell))
{
string coursename = drCourse["CourseName"].ToString().Substring(0, 8) + "...";
drp.Items.Add(new ListItem(coursename, drCourse["ID"].ToString()));
}
}
}
drp.SelectedIndex = 0;
}
}
protected void drp_SelectedIndexChanged(object sender, System.EventArgs e)
{
DropDownList drp;
Table tb = (Table)Page.FindControl("tbCourse");
int numcells = 4;
string hang = "";
string drpid = "";
string coursename = "";
for (int i = 1; i < numrows + 1; i++)
{
for (int j = 1; j < numcells; j++)
{
drp = (DropDownList)tb.FindControl(i.ToString() + "-" + j.ToString());
if (drp != null)
{ if (drp.SelectedValue != "取消选择")
{
drpid = ((DropDownList)sender).ID.ToString();
hang = drpid.Substring(0, drpid.IndexOf("-"));
coursename = drp.SelectedItem.Text;
}
}
}
}
hfdHang.Value += hang + ",";
hfdIndex.Value += drpid + ",";
hfdCourse.Value += coursename + ",";
}
1,目标:每行即某周的星期一三五只能选择一项,像第7行,若干有一个现在的,其他两个DropDownList禁用,当然若干又选“取消选择”,其他两DropDownList启用。
我的做法:在drp_SelectedIndexChanged里将选择项的DropDownList的ID、行数、项名(问题2用)添加到HiddenField里去,然后在BindCourse函数里判断哪些要禁用。
我的问题:我要提交两次才可以实现本行的另两个禁用。应该提交一次即可实现禁用。2,目标:假设某项选择了“聚氨...”,在提交并重新绑定后,所有DropDownList里的含“聚氨...”的都移除、或禁选或有提示。这个还没做。3,如果if (!IsPostBack){}里绑定,提交后,public int numrows=12;就无效了。。请教了,很急。
写到 Page_Load 里