取不到DropDownList的值
我在网页上做了几个动态生成的下拉菜单,可是当我选择好下拉菜单中的值,再想提交到数据库时,总是取到第一个值,请问怎么解决?部分代码:
static DropDownList[,] ddl;
for (int i = 0; i < numOfUsers; i++)
{
for (int j = i + 1; j < numOfUsers; j++)
{
ddl[i,j] = new DropDownList();
ddl[i,j].Items.Add(new ListItem(" 次要 ", "0.25"));
ddl[i,j].Items.Add(new ListItem("较次要", "0.5"));
ddl[i,j].Items.Add(new ListItem(" 相当 ", "1"));
ddl[i,j].Items.Add(new ListItem("较重要", "2"));
ddl[i,j].Items.Add(new ListItem(" 重要 ", "4"));
}
}
我在页面上选择以后,用ddl[i,j].SelectedValue或者SelectedItem.Text都只是取道第一个值,为什么啊?? --------------------编程问答-------------------- 代码放在
if(!Page.IsPostBack)
{
//放这里面
} --------------------编程问答-------------------- 访问我的博客 程序员日记 http://www.ideaext.com --------------------编程问答--------------------
是asp。net的,应改是这个原因! --------------------编程问答-------------------- for那段我是放在!IsPostBack里面的,很奇怪啊 --------------------编程问答-------------------- public partial class GroupSubmit : System.Web.UI.Page
{
DataBase db = new DataBase();
static int numOfUsers;
static string[] userId;
static DropDownList[,] ddl;
static string table;
string gid = "1";
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
db.Open();
//填充实验选择菜单
string selectProject = "select Pno,Pname from Project";
SqlDataReader projectReader = db.SelectReader(selectProject);
while (projectReader.Read())
{
SelectProject.Items.Add(new ListItem("实验" + projectReader[0] + " " + projectReader[1], projectReader[0].ToString()));
}
projectReader.Close();
//读取小组人数
string rNumOfUsers = "select count(*) from GroupMember where Gno='" + gid + "'";
numOfUsers = Convert.ToInt32(db.SelectResult(rNumOfUsers));
//读取小组成员学号
string rUserId = "select userId from GroupMember where Gno='" + gid + "'";
SqlDataReader useridReader = db.SelectReader(rUserId);
userId = new string[numOfUsers];
for (int i = 0; i < numOfUsers; i++)
{
useridReader.Read();
userId[i] = useridReader[0].ToString();
}
useridReader.Close();
db.Close();
ddl = new DropDownList[numOfUsers, numOfUsers];
for (int i = 0; i < numOfUsers; i++)
{
for (int j = i + 1; j < numOfUsers; j++)
{
ddl[i,j] = new DropDownList();
ddl[i,j].Items.Add(new ListItem(" 次要 ", "0.25"));
ddl[i,j].Items.Add(new ListItem("较次要", "0.5"));
ddl[i,j].Items.Add(new ListItem(" 相当 ", "1"));
ddl[i,j].Items.Add(new ListItem("较重要", "2"));
ddl[i,j].Items.Add(new ListItem(" 重要 ", "4"));
}
}
DrawTable();
//Consistency();
}
//db.Close();
}
protected void DrawTable()
{
string isCommited="";
switch (SelectPart.Text)
{
case "Coding":
table = "User_Project_Coding";
isCommited = "select CodingCmmt from Group_Project_Mark where Gno='" + gid + "' and Pno='" + SelectProject.SelectedValue + "'";
break;
case "Testing":
table = "User_Project_Testing";
isCommited = "select TestingCmmt from Group_Project_Mark where Gno='" + gid + "' and Pno='" + SelectProject.SelectedValue + "'";
break;
case "Report":
table = "User_Project_Report";
isCommited = "select ReportCmmt from Group_Project_Mark where Gno='" + gid + "' and Pno='" + SelectProject.SelectedValue + "'";
break;
}
db.Open();
int cmmtValue = Convert.ToInt32(db.SelectResult(isCommited));
if (cmmtValue == 0)
{
stat.Text = "状态:尚未提交";
Button1.Enabled = true;
}
else if (cmmtValue == 1)
{
stat.Text = "状态:已提交,可修改";
Button1.Enabled = true;
}
else if (cmmtValue == 2)
{
stat.Text = "状态:已提交,不可修改";
Button1.Enabled = false;
}
//第一行
TableRow firstRow = new TableRow();
MatrixTable.Rows.Add(firstRow);
//第一行第一个单元格
TableCell firstRowFirstCell = new TableCell();
firstRow.Cells.Add(firstRowFirstCell);
for (int cellCtr = 0; cellCtr < numOfUsers; cellCtr++)
{//第一行其他单元格
TableCell firstRowOtherCell = new TableCell();
firstRowOtherCell.Text = userId[cellCtr];
firstRow.Cells.Add(firstRowOtherCell);
}
for (int rowCtr = 0; rowCtr < numOfUsers; rowCtr++)
{//其他几行
TableRow otherRow = new TableRow();
MatrixTable.Rows.Add(otherRow);
TableCell otherRowFirstCell = new TableCell();
otherRowFirstCell.Text=userId[rowCtr];
otherRow.Cells.Add(otherRowFirstCell);
for (int cellCtr = 0; cellCtr < numOfUsers; cellCtr++)
{
TableCell otherRowOtherCell = new TableCell();
if(cellCtr>rowCtr)
{
if (cmmtValue == 1)
{//已提交,教师未确认的情况
string rtnResult = "select result from " + table + " where userIdA='" + userId[rowCtr] + "' and userIdB='" + userId[cellCtr] + "'";
double rtn = Convert.ToDouble(db.SelectResult(rtnResult));
if (rtn == 0.25)
{
ddl[rowCtr, cellCtr].SelectedValue = "0.25";
}
else if (rtn == 0.5)
{
ddl[rowCtr, cellCtr].SelectedValue = "0.5";
}
else if (rtn == 1)
{
ddl[rowCtr, cellCtr].SelectedValue = "1";
}
else if (rtn == 2)
{
ddl[rowCtr, cellCtr].SelectedValue = "2";
}
else if (rtn == 4)
{
ddl[rowCtr, cellCtr].SelectedValue = "4";
}
}
else if (cmmtValue == 2)
{//已提交,教师已确认的情况
string rtnResult = "select result from " + table + " where userIdA='" + userId[rowCtr] + "' and userIdB='" + userId[cellCtr] + "'";
double rtn = Convert.ToDouble(db.SelectResult(rtnResult));
if (rtn == 0.25)
{
ddl[rowCtr, cellCtr].SelectedValue = "0.25";
}
else if (rtn == 0.5)
{
ddl[rowCtr, cellCtr].SelectedValue = "0.5";
}
else if (rtn == 1)
{
ddl[rowCtr, cellCtr].SelectedValue = "1";
}
else if (rtn == 2)
{
ddl[rowCtr, cellCtr].SelectedValue = "2";
}
else if (rtn == 4)
{
ddl[rowCtr, cellCtr].SelectedValue = "4";
}
MatrixTable.Enabled = false;
}
otherRowOtherCell.Controls.Add(ddl[rowCtr, cellCtr]); //将创建的DropDownList增加到单元格内
}
otherRow.Cells.Add(otherRowOtherCell);
}
}
db.Close();
}
.....
} --------------------编程问答-------------------- DrawTable();
把这句搬到!IsPostBack外面貌似就可以了,不过为什么啊,谁能告诉我 --------------------编程问答-------------------- 把DropDownList的AutoPostBack的值改为True --------------------编程问答-------------------- --------------------编程问答-------------------- 法师法师打死 --------------------编程问答-------------------- 用ddl.Text.Trim()就可以了
补充:.NET技术 , C#