DataGrid使用技巧(一)
点击次数:21 次 发布日期:2008-11-26 11:12:26 作者:源代码网
|
源代码网推荐 源代码网推荐 -------如何屏蔽单元格输入 源代码网推荐 源代码网推荐 有时候听有些朋友抱怨.NET的DataGrid不是很好用。就我个人的体会,DataGrid的功能非常强大,可以使我们随心所欲的完成各种各样的工作,可惜就是实现起来不够简单明了。我对平时经常碰到的一些问题积累了一些解决的方法,现在把它们总结一下供大家参考。 源代码网推荐 源代码网推荐 比较经常碰到的一个问题是:我们希望DataGrid的某一列只能输入特定的文本,比如:不能输入数字。下面的例子说明如何实现这种功能。 源代码网推荐 新建一个Window应用程序,加入一个DataGrid和SqlConnection,连接SQL数据库NorthWind。 源代码网推荐 源代码网推荐 源代码网推荐 namespace WindowsApplication1 源代码网推荐 { 源代码网推荐 public class Form1 : System.Windows.Forms.Form 源代码网推荐 { 源代码网推荐 private myDataGrid dataGrid1; 源代码网推荐 private System.Data.SqlClient.SqlConnection sqlConnection1; 源代码网推荐 //加入全局变量oldValue,用它表示单元格原来的文本。 源代码网推荐 private string oldValue; 源代码网推荐 源代码网推荐 private void Form1_Load(object sender, System.EventArgs e) 源代码网推荐 { 源代码网推荐 oldValue=""; 源代码网推荐 SqlDataAdapter sda=new SqlDataAdapter("select LastName,FirstName from employees",this.sqlConnection1); 源代码网推荐 DataSet ds=new DataSet(); 源代码网推荐 sda.Fill(ds,"employees"); 源代码网推荐 DataGridTableStyle ats=new DataGridTableStyle(); 源代码网推荐 ats.MappingName="employees"; 源代码网推荐 DataGridColorColumn dcs1=new DataGridColorColumn(); 源代码网推荐 dcs1.HeaderText="lastname"; 源代码网推荐 ats.GridColumnStyles.Add(dcs1); 源代码网推荐 DataGridTextBoxColumn dcs2=new DataGridTextBoxColumn(); 源代码网推荐 dcs2.HeaderText="firstname"; 源代码网推荐 dcs2.MappingName="FirstName"; 源代码网推荐 dcs2.TextBox.TextChanged+=new EventHandler(DataGridTextChanged); 源代码网推荐 dcs2.TextBox.Enter+=new EventHandler(DataGridTextBox_Enter); 源代码网推荐 ats.GridColumnStyles.Add(dcs2); 源代码网推荐 this.dataGrid1.TableStyles.Add(ats); 源代码网推荐 this.dataGrid1.DataSource=ds; 源代码网推荐 this.dataGrid1.DataMember="employees"; 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 private void DataGridTextBox_Enter(object sender,EventArgs e) 源代码网推荐 { 源代码网推荐 //当某一单元格获得焦点时,记录单元格的文本 源代码网推荐 oldValue=((DataGridTextBoxColumn) this.dataGrid1.TableStyles[0].GridColumnStyles[1]).TextBox.Text; 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 private void DataGridTextChanged(object sender,EventArgs e) 源代码网推荐 { 源代码网推荐 int index=0; 源代码网推荐 string str=((DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[1]).TextBox.Text; 源代码网推荐 //当单元格的文本改变时,检验是否有非法字符 源代码网推荐 while(index<str.Length) 源代码网推荐 { 源代码网推荐 //如果发现数字,显示错误信息并将单元格还原为原内容 源代码网推荐 if (Char.IsDigit(str,index)) 源代码网推荐 { 源代码网推荐 MessageBox.Show("不能输入数字,请重新输入"); 源代码网推荐 ((DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[1]).TextBox.Text=oldValue; 源代码网推荐 return; 源代码网推荐 } 源代码网推荐 index++; 源代码网推荐 } 源代码网推荐 } 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
