• 网页面里动态添加linkbutton或者button


    就是页面里面的button的个数不确定,要动态的添加添加n个,基本思路是用controls.add()事件。因为想排的整齐一点,所以事先在前台拖拽了个table

    <asp:Table ID="Table1" runat="server" BorderWidth="0" BorderStyle="None" Width="100%"
                    EnableViewState="False">
    
    </asp:Table>

    然后5个一行加linkbutton(button)

    View Code
     DbHelper dbhelper = ConnMgr.getDbHelp();
                string strsql = "select szmc,id from shizheng ORDER BY NLSSORT(szmc,'NLS_SORT = SCHINESE_PINYIN_M')";
                DataTable dt = new DataTable();
                dbhelper.FillDataSetTable(strsql, dt);
                dbhelper.Close();
                //检索出所有的市政
                Table1.Rows.Clear();
    
                int glmcnum = dt.Rows.Count;
                int k = 0;
                for (int i = 0; i < (glmcnum - 1) / 5 + 1; i++)
                {
                    TableRow r = new TableRow();
                    for (int j = 0; j < 5; j++)
                    {
                        if (k < glmcnum)
                        {
                            TableCell c = new TableCell();
                            LinkButton lb = new LinkButton();
                            lb.ID = "lbsz" + k.ToString();
                            lb.Text = dt.Rows[k]["szmc"].ToString();
                            lb.Attributes["id"] = dt.Rows[k]["id"].ToString();
                            lb.Attributes["szmc"] = dt.Rows[k]["szmc"].ToString();
                            lb.Click += new EventHandler(lb_Click);
                            c.Controls.Add(lb);
                            r.Cells.Add(c);
                            k++;
                        }
                    }
                    Table1.Rows.Add(r);
                    //每行显示5个显示显示所有的工点
                }
                return dt;
    void lb_Click(object sender, EventArgs e)
            {
                LinkButton lb = sender as LinkButton;
                string id = lb.Attributes["id"];
                //自己的代码
                //throw new NotImplementedException();
            }

    要强调的是:一定要给每个linkbutton添加id属性,不然会引起预料之外的后果。

    我就因为这个调试了好几天。


    ps:那些事件啊,lb.Attributes啊其实都是假象。http协议下是无状态的。点一个按钮实际上是页面回传,先执行pageload再执行lb_click,object sender什么的也不要信,lb_click并没有把原来的button真的作为一个object传给事件。事实上asp.net把事件什么的编成了一个js文件,里面有很多函数。我们的lb.Attributes实际被当做参数传给了相应的js函数。如果两个button在页面回传时的page_load过程中id换了,那么他们传的参数也会互换。所以你自己生成的button一定自己就把id写死了,不然页面会自动给它分配id,而并不能保证页面回传后它被分配的id还是一样的。

  • 相关阅读:
    新博客第一篇,字符串 Unicode 转义
    C# 泛型方法的类型推断
    一个改进 LRU 算法的缓冲池 update 2013.7.15
    C# 判断类型间能否隐式或强制类型转换,以及开放泛型类型转换 update 2015.02.03
    C# 词法分析器(三)正则表达式
    java面试题(二)
    Map的迭代
    Spring aop切面插入事物回滚
    Log4J的配置
    js中将yyyyMMdd格式的日期转换
  • 原文地址:https://www.cnblogs.com/wasss/p/2646165.html
Copyright © 2020-2023  润新知