DataGrid使用技巧

时间:2010-03-12 18:20:58  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:些问题积累了一些解决的方法,现在把它们总结一下供大家参考。       比较经常碰到的一个问题是:我们希望DataGrid的某一列只能输入特定的文本,比如:不能输入数字。下面的例子说明如何实现这种功能。    新建一个Window应用程序,加入一个DataGrid和SqlConnection,连接SQL数据库NorthWind。      
  正文:-------如何屏蔽单元格输入
  
   有时候听有些朋友抱怨.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++;
   }
  }
  }
------------如何实现多行表头
  
   有时候听有些朋友抱怨.NET的DataGrid不是很好用。就我个人的体会,DataGrid的功能非常强大,可以使我们随心所欲的完成各种各样的工作,可惜就是实现起来不够简单明了。我对平时经常碰到的一些问题积累了一些解决的方法,现在把它们总结一下供大家参考。
   比较经常碰到的一个问题是:我们希望DataGrid的表头是多行的(图1)。我在网上找了很久也找不到解决的方法,后来想到了DataGrid的 CaptionText和CaptionFont属性。于是我就想能不能在Caption的显示区域画出多行表头。下面的示例代码实现了这个想法,结果如图1所示。

"DataGrid使用技巧"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/13219.html

 1/7    1 2 3 4 5 6 下一页 尾页


关键字:

关于《DataGrid使用技巧》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td