请问好何获取放在
EditItemTemplate上 一个check控件的值。
这样为什么不行?
bool   allow_ip = ((CheckBox)e.Item.Cells[3].Controls[0]).Checked;
请行人指明。
是不是一个模板列在第4 列.

解决方案 »

  1.   

    上述的错误是无法转换,也许应是这样.
    bool   allow_ip = ((CheckBox)e.Item.Cells[3].Controls[1]).Checked;
    但它的值一直是FALSE,也就是得不到前台的值,这是怎到回事.
      

  2.   

    CheckBox ck = (CheckBox)e.Item.FindControl("CheckBox1");
    bool   allow_ip = ck.Checked;
    我改成这样也是永远一个值,fase
      

  3.   

    还有事件是不是edit事件,因为你用的是EditItemTemplate,只有edit事件中才能找到这个CheckBox
      

  4.   

    现在是,只要我初使化成什么状态,它就改不了.EditItemTemplate,还是itemTemplate
      

  5.   

    你用的是EditItemTemplate,所以只有在edit事件中才可以找到这个CheckBox1,否则用itemTemplate
      

  6.   

    如果你不是在Edit状态下触发事件,就用itemTemplate
      

  7.   

    注意page_load事件中,是否重新绑定了一次datagrid?????
      

  8.   

    是呀,
    我在page_load中有
    DataGrid1.DataSource = ds1;
    DataGrid1.DataBind();
    但是如果没有这几句,你按了编辑按钮后就得不到datagrid这个表格了
      

  9.   

    不要在page_load中绑定,应该在edit事件中最后绑定
      

  10.   

    多帖点前台的代码
    给chexkbox一个id用findcontrol试试?
    绑定是不是放在if(!IsPostBack)
    参考http://www.cnblogs.com/lovecherry/archive/2005/07/15/193477.html
      

  11.   

    告诉你个好方法,跟踪进去,看DataGrid的Item对象,看里面的值,就知道怎么FindControl了
      

  12.   

    private void Page_Load(object sender, System.EventArgs e)
    {
        string str = "SELECT *  FROM sifu WHERE _check =0 ORDER BY _time DESC" ;
        ds1=sql.GetData(str);
        DataGrid1.DataSource = ds1;
        DataGrid1.DataBind();
    }CheckBox ck = (CheckBox)e.Item.FindControl("ch");
    bool   allow_ip = ck.Checked;<asp:TemplateColumn HeaderText="允许IP链接">
    <ItemTemplate>
      <FONT face="宋体"></FONT>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:CheckBox id="ch" runat="server" Text="允许" EnableViewState=True></asp:CheckBox>
    </EditItemTemplate>
    </asp:TemplateColumn>
      

  13.   


    这样赋值应该可以
    ((CheckBox)(this.mDataGrid.Items[i].FindControl("mCheckBox"))).Checked = true
      

  14.   

    想得到前台的值也是这样((CheckBox)(this.mDataGrid.Items[i].FindControl("mCheckBox"))).Checked == true(false)
      

  15.   

    我知道了,你按一次编辑,它触发一次Page_Load
    你按一次更新,它也触发一次,
    这样前台的值永远到不了后台,但是,你如果这样的话
    private void Page_Load(object sender, System.EventArgs e)
    {
      if(!IsPostBack)
    {
        string str = "SELECT *  FROM sifu WHERE _check =0 ORDER BY _time DESC" ;
        ds1=sql.GetData(str);
        DataGrid1.DataSource = ds1;
        DataGrid1.DataBind();
    }
    }的话,我在按一次编辑,页面就不显示datagrid了,为什么? 页面就成了一张空白.
    请问如何解决?
      

  16.   

    private void Page_Load(object sender, System.EventArgs e)
    {
          string str = "SELECT *  FROM sifu WHERE _check =0 ORDER BY _time DESC" ;
        ds1=sql.GetData(str);
        DataGrid1.DataSource = ds1;
    if(!IsPostBack)
    {    DataGrid1.DataBind();
    }
    }