2015-05-25 24 views
0

我有一个网格视图与模板列,并在ItemTemplate我有文本框与sqldatasbound绑定,我想这个文本框在第3行只输入数字和其他行到正常地输入任何东西?testbox验证gridview中的特定行

+0

尝试在代码这样做的背后使用功能'RowDataBound'和应用验证规则如果行指数为3 –

回答

0
  • 在EditingControlShowing中,检查当前单元格是否位于所需的列中。
  • 在EditingControlShowing中注册KeyPress的新事件(如果上述条件为真)。
  • 删除先前在EditingControlShowing中添加的任何KeyPress事件。
  • 在KeyPress事件中,检查如果键不是数字,则取消输入。

    private void dataGridView1_EditingControlShowing(object sender,  DataGridViewEditingControlShowingEventArgs e) 
    { 
    e.Control.KeyPress -= new KeyPressEventHandler(Column1_KeyPress); 
    if (dataGridView1.CurrentCell.ColumnIndex == 0) //Desired Column 
    { 
    TextBox tb = e.Control as TextBox; 
    if (tb != null) 
    { 
        tb.KeyPress += new KeyPressEventHandler(Column1_KeyPress); 
    } 
    } 
    } 
    
    private void Column1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) 
    { 
    e.Handled = true; 
    } 
    } 
    

代码Coutesy - Make a specific column only accept numeric value in datagridview in Keypress event

+0

谢谢你,但让所有该列,但我想在第三行上的该列上做一个测试框? – KAS

+0

您是否更改了ColumnIndex == ** [期望列号] **,然后您可以编写另一个IFLoop来查找您选择的文本框。或者作为第二个选项,你可以使用GridView的RowDataBound事件。 – v2v2