前天关于dropdownlist问题有错误

动态创建后在选择任何一个dropdownlist时,刷新页面后所有创建的 dropdownlist的当前选择的值都变为最后一个dropdownlist选择的值,找到原因是在dropdownlist的值取自全局变量listitem集合中的值。所有dropdownlist都指向一个listitem集合,所以造成所有dropdownlist的值变为最后一个选择的值。采用的修改方法:将listitem定义为局部变量。在每一次生成dropdownlist时都同时生成listitem集合。

全局变量和局部变量之间的区别!!!深刻体会到了。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testDropdown.aspx.cs" Inherits="EmployeeInfoReferPurview_files_testDropdown" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
    <script language=javascript>
    function getvalue(obj,obj1,obj2)
    {
      obj.value = obj1.value;
      obj2.value = obj1.innertext;
    }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <h2>取下拉框值</h2>
    <div>
        <asp:Table ID="tbl" runat="server">
       
        </asp:Table>
        <asp:Button ID="Button5" runat="server" Text="取得Dropdownlist的下拉值" OnClick="Button5_Click"/><br />
        <br />
        <asp:TextBox ID="txtq" runat="server" Width="871px"></asp:TextBox>
        <br />
        <asp:DropDownList ID="ddlq" runat="server">
            <asp:ListItem>1</asp:ListItem>
            <asp:ListItem>2</asp:ListItem>
            <asp:ListItem>3</asp:ListItem>
            <asp:ListItem>4</asp:ListItem>
        </asp:DropDownList>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></div>
    </form>
</body>
</html>

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;

public partial class EmployeeInfoReferPurview_files_testDropdown : System.Web.UI.Page
{
    DropDownList[] ddllst = new DropDownList[3];
    TextBox[] txtlst = new TextBox[3];
    HiddenField[] hflst = new HiddenField[3];
    HiddenField[] hftextlst = new HiddenField[3];

    protected override void OnInit(EventArgs e)
    {
        //createtable();
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        createtable();
        if (!Page.IsPostBack)
        {           
            for (int i = 0; i < 3; i++)
            {
                txtlst[i].ForeColor = Color.Red;
            }           
        }
    }

    protected void createtable()
    {
        for (int i = 0; i < 3; i++)
        {//修正处

    ListItem li1 = new ListItem("q", "0");
    ListItem li2 = new ListItem("w", "1");
    ListItem li3= new ListItem("e", "2");

            TableRow tr = new TableRow();
            tr.ID = "tr"+i;
            TableCell tc = new TableCell();
            tc.ID = "tc" + i;
            DropDownList ddl = new DropDownList();
            ddl.ID = "ddl" + i;
            ddl.Items.Add(li1);
            ddl.Items.Add(li2);
            ddl.Items.Add(li3);            //ddl.Items.FindByValue(li2.Value).Selected = true;
           
            HiddenField hf = new HiddenField();
            hf.ID = "hf" + i;
            hf.Value = ddl.SelectedValue;
            HiddenField hftext = new HiddenField();
            hftext.ID = "hftext" + i;
            hftext.Value = ddl.SelectedItem.Text;
            ddl.Attributes.Add("onclick", "javascript:getvalue(hf" + i + ",ddl" + i + ",hftext" + i + ");");
            ddllst[i] = ddl;
            hflst[i] = hf;
            hftextlst[i] = hftext;
            //HiddenField hf = new HiddenField();
            //hf.ID = "hf" + i;
            //hf.Value = ddl.SelectedValue;
            tc.Controls.Add(ddl);
            tc.Controls.Add(hf);
            tc.Controls.Add(hftext);
            tr.Controls.Add(tc);
            tbl.Rows.Add(tr);

            TableRow tr1 = new TableRow();
            tr1.ID = "tr1"+i;
            TableCell tc1 = new TableCell();
            tc1.ID = "tc1" + i;
            TextBox txt = new TextBox();
            txt.ID = "txt" + i;
            //txt.ForeColor = Color.Red;
            txtlst[i] = txt;
            tc1.Controls.Add(txt);
            tr1.Controls.Add(tc1);
            tbl.Rows.Add(tr1);
        }
    }

    protected void Button5_Click(object sender, EventArgs e)
    {                
        for (int i = 0; i < 3; i++)
        {
            //string a = ((DropDownList)tbl.FindControl(ddllst[i].ID)).SelectedValue;
            string b = hflst[i].Value +"-"+hftextlst[i];

//只要知道动态生成的控件的名称也可以不用数组来保存控件,方法如下:

        string b=(DropDownList)tbl.FindControl("ddl"+i).value;

        string c=(HiddenField)tbl.FindControl("hf"+i).value;


            txtq.Text += b + "//";
            //txtq.Text += a+" "+b+"//";
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值