2016-03-08 94 views
0

我当前有一个由带有存储双值的列的数据库表(DB归类:SQL_Latin1_General_CP1_CI_AS)填充的DGV。每当我被textbox_changetext事件触发一个RowFilter,我得到一个格式异常,代码如下:DataGridView RowFilter double和CurrentCultureInfo问题

if (textBox4.Text != "" && textBox4.Text.Replace("*", "").Length > 0) 
{ 
    filtertext += string.Format("[Esp (mm)]= {0} AND ", Convert.ToDouble(textBox4.Text)); 
} 

private void textBox4_TextChanged(object sender, EventArgs e) 
{ 
    try 
    { 
     (dataGridView4.DataSource as DataTable).DefaultView.RowFilter = filtertext; 
      state = State.Pending; 

     dataGridView4.Refresh(); 
     label13.Text = "Total de registros: " + dataGridView4.Rows.GetRowCount(DataGridViewElementStates.Visible); 
    } 
    catch (Exception err) 
    { 
     claMisc.MsgBox(err.ToString()); 
    } 
} 

我CurrentCultureInfo是基于NumberDecimalSeparator =“”和DGV看来这种格式下进行装载,然而“转换。 ToDouble“返回”。“作为DecimalSeparator。我该如何解决这个问题?

回答

0

已解决。过滤器正在触发具有空datagridview的EnterCell事件。解决方案是这样的:

public void event(sender, eventargs) 
{ 
    if (dataGridView.Rows.Count>0 && dataGridView.SelectedCells.Count>0 && dataGridView.SelectedCells[0].RowIndex<dataGridView.Rows.Count) continue... 
}