当前位置:编程学习 > C#/ASP.NET >>

取不到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 --------------------编程问答--------------------
引用 1 楼 yangqidong 的回复:
代码放在 
if(!Page.IsPostBack) 

  //放这里面 
}


是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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,