请教高手,在datagrid中,我点了datagrid中的编辑按钮,会在各个列出现文本筐让你修改,请问我怎么用正则表达式控制这文本筐的输入格式呢

解决方案 »

  1.   

    把验证控件放在TextBox所在的模板编辑列中即可!
      

  2.   

    能具体点好吗,那个textbox不是我脱上去的,是点了编辑以后自己出来的,我那一列是绑定了一个字段,好像不是模板列
      

  3.   

    如果我把该列改成模板列,那(System.Web.UI.WebControls.TextBox)e.Item.Cells[2].Controls[0]).Text.Trim();好像就取不到值了
      

  4.   

    ((TextBox)e.Item.FindControl("TextboxXXX")).Text.Trim();
      

  5.   

    页面
    <asp:TextBox id="st" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.SEND_TIME") %>'>
    程序
    string dd=((System.Web.UI.WebControls.TextBox)e.Item.FindControl("st")).Text;
    异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
      

  6.   

    把绑定TextBox的完整语句和设置的完整语句粘贴出来看看?
      

  7.   

    页面:
    <asp:TemplateColumn HeaderText="发送时间">
    <ItemTemplate>
    <asp:Label runat="server"  Text='<%# DataBinder.Eval(Container, "DataItem.SEND_TIME") %>'>
    </asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox  runat="server" id="st" Text='<%# DataBinder.Eval(Container,"DataItem.SEND_TIME") %>'>
    </asp:TextBox>
    <asp:regularexpressionvalidator id="RegularExpressionValidator1" runat="server" ValidationExpression="^((((1[6-9]|0-5]?\d$"
    ControlToValidate="st" ErrorMessage="时间格式有误" Display="Dynamic"></asp:regularexpressionvalidator>
    </EditItemTemplate>
    程序:
    private void dz_DataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e){
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem ){
    DateTime dt = DateTime.Now;
    string dd=((System.Web.UI.WebControls.TextBox)e.Item.FindControl("st")).Text;}}
      

  8.   

    if (e.Item.ItemType == ListItemType.EditItem)
    {
    DateTime dt = DateTime.Now;
    string dd=((System.Web.UI.WebControls.TextBox)e.Item.FindControl("st")).Text;
    }
      

  9.   

    是不报错了,可是我这个判断就不起作用了
    if (Convert.ToDateTime(((System.Web.UI.WebControls.TextBox)e.Item.FindControl("st")).Text) < dt)
    {
    e.Item.Enabled = false;
    }
    else
    {
    e.Item.Style.Add("color","red");
    } }
      

  10.   

    swordragon(古道热肠)你有MSN吗,挺急的,想跟你请教一下,我的是[email protected]
      

  11.   

    private void dz_DataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
        DateTime dt = DateTime.Now;
        bool blnFlag = false;
        
        if (e.Item.ItemType == ListItemType.EditItem)
        {
            if (Convert.ToDateTime(((System.Web.UI.WebControls.TextBox)e.Item.FindControl("st")).Text) < dt)
            {
                blnFlag = false;
            }
            else
            {
                blnFlag = true;
            }
        }
        
        if (blnFlag)
        {
            e.Item.Style.Add("color","red");
        }
        else
        {
            e.Item.Enabled = false;
        }
    }这样可以吗?
      

  12.   

    不行,全部都变成灰色的了,还有就是我在private void dz_DataGrid_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)这些事件中用((System.Web.UI.WebControls.TextBox)e.Item.FindControl("st")).Text也是报未将对象引用设置到对象的实例,能加一下我的MSN吗
      

  13.   

    <EditItemTemplate>
    <asp:TextBox  runat="server" id="st" Text='<%# DataBinder.Eval(Container,"DataItem.SEND_TIME") %>'>
    </asp:TextBox>
    <asp:regularexpressionvalidator id="RegularExpressionValidator1" runat="server" ValidationExpression="^((((1[6-9]|0-5]?\d$"
    ControlToValidate="st" ErrorMessage="时间格式有误" Display="Dynamic"></asp:regularexpressionvalidator>
    </EditItemTemplate>改为:<ItemTemplate>
    <asp:TextBox  runat="server" id="st" Text='<%# DataBinder.Eval(Container,"DataItem.SEND_TIME") %>'>
    </asp:TextBox>
    <asp:regularexpressionvalidator id="RegularExpressionValidator1" runat="server" ValidationExpression="^((((1[6-9]|0-5]?\d$"
    ControlToValidate="st" ErrorMessage="时间格式有误" Display="Dynamic"></asp:regularexpressionvalidator>
    </ItemTemplate>以后,还用你原来的代码试试吧。我这里已经禁止了一切与外界联系的手段,除了几个学习的网站,呵呵
      

  14.   

    这样出来的页面中datagrid里一出来就有一个text筐,怎么才能象原来一样,是一个平平的表格呢
      

  15.   

    如果要满足你的要求,就必须使用绑定列。1、修改为绑定列2、ItemDataBound中动态绑定验证表达式
    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {   
        if (e.Item.ItemType == ListItemType.EditItem)
        {
            TextBox tb1 = ((System.Web.UI.WebControls.TextBox)e.Item.Cells[x].Controls[0]);
            RegularExpressionValidator  re = new RegularExpressionValidator();
            re.ValidationExpression = @"^((((1[6-9]|0-5]?\d$";
            re.ControlToValidate = "tb1";
        }
    }
      

  16.   

    怎么这么复杂啊,给datagrid中的单元加个验证控件,怎么这么难啊