none
关于 GRIDVIEW内动态构造其中的一列 列中控件的事件如何指定 RRS feed

  • 问题

  •  

    由于业务需要 GRIDVIEW横向显示也需要是动态的
    经讨论决定 动态构造其中一列 列中内容动态制作
    GRIDVIEW初始设置了2列  第一列是ID
    然后在行绑定事件RowDataBound 里 根据ID去构造GRIDVIEW的第二列
    构造时是 div="<table id=\"tbl_Caption\" cellpadding=\"0\" cellspacing=\"1\" border=\"0\" ><tr><td<input value=\"" + ds.Tables[0].Rows[0]["Case_Group_Name_1"].ToString() + "\" runat=\"server\" type=\"text\"  id=\"Case_Group_Name_A_1"\" style=\"width:66px;text-align:center;\" /></td>.....
    是以这样的形式构造一个TABLE 构造完后 是以 e.Row.Cells[1].Text = div;这样的形式予以绑定显示的;
    其中构造完的table里有很多个INPUT控件

    这样子做 显示是搞定了 但是需要实现一个功能 就是在点击其中任何一个控件时都要有一个事件 并且点该控件的事件需要把自己的ID和VALUE都能传到该事件里.这样是为了每个INPUT控件可以共用该事件 并且进行操作

    由于是在GRIDVIEW里 所以 也不能直接给控件加ONCLICK事件

    如果不是动态构造的话 可以用
    HtmlInputText npt = (HtmlInputText)e.Row.Cells[1].FindControl("Case_Group_Name_A_1");
    npt.Attributes.Add("onclick", "aaa(this)");
    这样在RowDataBound 里给每个控件注册事件
    但由于是自己写上去的的 (HtmlInputText)e.Row.Cells[1].FindControl("Case_Group_Name_A_1")根本就找不到该控件

    不知道那里出了问题  个人感觉 好象是e.Row.Cells[1].Text = div这样写可能会导致找不到 正确的该怎么写?
    在这样显示后该如何去给控件注册方法???  在线跪求!!! 请各位高人指点!!!

    2009年1月7日 9:26

答案

全部回复

  •  

    由于业务需要 GRIDVIEW横向显示也需要是动态的
    经讨论决定 动态构造其中一列 列中内容动态制作
    GRIDVIEW初始设置了2列  第一列是ID
    然后在行绑定事件RowDataBound 里 根据ID去构造GRIDVIEW的第二列
    构造时是 div="<table id=\"tbl_Caption\" cellpadding=\"0\" cellspacing=\"1\" border=\"0\" ><tr><td<input value=\"" + ds.Tables[0].Rows[0]["Case_Group_Name_1"].ToString() + "\" runat=\"server\" type=\"text\"  id=\"Case_Group_Name_A_1"\" style=\"width:66px;text-align:center;\" /></td>.....
    是以这样的形式构造一个TABLE 构造完后 是以 e.Row.Cells[1].Text = div;这样的形式予以绑定显示的;
    其中构造完的table里有很多个INPUT控件

    这样子做 显示是搞定了 但是需要实现一个功能 就是在点击其中任何一个控件时都要有一个事件 并且点该控件的事件需要把自己的ID和VALUE都能传到该事件里.这样是为了每个INPUT控件可以共用该事件 并且进行操作

    由于是在GRIDVIEW里 所以 也不能直接给控件加ONCLICK事件

    如果不是动态构造的话 可以用
    HtmlInputText npt = (HtmlInputText)e.Row.Cells[1].FindControl("Case_Group_Name_A_1");
    npt.Attributes.Add("onclick", "aaa(this)");
    这样在RowDataBound 里给每个控件注册事件
    但由于是自己写上去的的 (HtmlInputText)e.Row.Cells[1].FindControl("Case_Group_Name_A_1")根本就找不到该控件

    不知道那里出了问题  个人感觉 好象是e.Row.Cells[1].Text = div这样写可能会导致找不到 正确的该怎么写?
    在这样显示后该如何去给控件注册方法???  在线跪求!!! 请各位高人指点!!!

    2009年1月7日 9:26
  • 服务器控件不能这样加
    是 div="<table id=\"tbl_Caption\" cellpadding=\"0\" cellspacing=\"1\" border=\"0\" ><tr><td<input value=\"" + ds.Tables[0].Rows[0]["Case_Group_Name_1"].ToString() + "\" runat=\"server\" type=\"text\"  id=\"Case_Group_Name_A_1"\" style=\"width:66px;text-align:center;\" /></td>.....

    你只能
    Button b = new Button();
    然后添加进去

    简单的做法是使用html input。

    2009年1月7日 9:36
    版主
  • 动态添加服务器控件参考
    http://dotnet.aspx.cc/article/897cb049-ccff-4fe7-b990-df974493a0b1/read.aspx
    2009年1月7日 9:38
    版主
  •  

    您哪个是直接添加  但是我那是需要获得前面第一列的ID  在经过数据库查询 在去构造 还要绑定的

    构造的TABLE里面还是有很多控件的  这该怎么处理啊? 

    2009年1月7日 10:02
  •  

    绑定事件里可以得到id的
    2009年1月7日 12:34
    版主
  •  

    你好,你可以在Page_Init方法中根据你的数据通过动态添加TemplateColumn来实现。

    具体参考下面的连接。

    http://www.cnblogs.com/Fortunelee/articles/505044.html

    2009年1月12日 10:43