使用GridView控件绑定数据

今天在练习GridView控件绑定数据的时候再次遇到了这个熟悉的错误。


错误提示我没有添加一个叫”jquery”ScriptResourceMapping的东东,我一直在想,我的程序始终就没有涉及什么jquery呀,更不用说少个什么东西了,带着疑惑百度了一下,人家的解决方法就是把缺少的东西拷贝到自己项目的对应文件夹下,以及找到:C:\Program Files\Microsoft WebTools\Packages\AspNet.ScriptManager.jQuery.1.8.2\lib\net45中的AspNet.ScriptManager.jQuery.dll文件,拷贝到自己项目的bin目录下。按照这种方式错误解决了,可是始终不明白为什么,而且上次出现这个问题同样也是在界面中加入了验证控件的原因,猜想出现的问题是不是与验证控件有关系???我打开网页中源代码查看,发现了jquery的痕迹:


而在我的项目中确实没有任何涉及到jQuery的东西,所以我可以肯定确实是我的程序少了关于jQuery的某些东西,但是为什么会少了呢,我又没有删除什么???

原来我添加的项目是一个空的项目,添加项目完成之后除了一个自动添加的配置文件以外,什么也没有自带添加,都是我需要什么然后手动添加的,真正添加一个完全的项目,他会自动添加很多东西,其中就包括了Scripts文件夹,在这个文件夹下就已经包含了那个缺少的文件。

总结出的具体原因和具体解法:

因为使用验证控件,Web Form默认使用的是UnobtrusiveValidationMode来进行验证,所以自动会引入jQuery语句,为了避免这种情况,我们可以不使用UnobtrusiveValidationMode来进行验证,只需要在页面加载时UnobtrusiveValidationMode = UnobtrusiveValidationMode.None即可。

如果一定要使用这种验证方式,同样也可以这样设置:在Global.asax.cs的Application_Start事件中,設定ScriptResourceMapping:


(其中的路径要是自己文件的路径)。

现在问题解决了,我们来介绍一下如何使用GridView控件绑定数据:

设计的界面如图,记得添加自定义验证控件(CustomValidator1):


我们在传值的过程中把“编号”、“姓名”和“性别”作为一个实体进行传递,我们建立了一个实体类:person.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ADONET
{   
    public class person
    {
        public string pID;
        public string pName;
        public string pSex;
        public person()
        { }

    }
}

这样我们在界面代码中就可以把这些属性赋给一个实体类型的对象了。

然后建立一个操作类(personOperate.cs),该类中直接写出关于操作数据库的东西,在这个例子中主要有查询和添加两个操作。首先我们查询用户是否已经存在,如果存在就要我们的验证控件起作用了。

定义数据库的连接方法

 public static SqlConnection createCon()
  {
       return new SqlConnection("server=.;database=adoNetTest;uid=sa;pwd=123456;");
  }

查询用户是否已经存在(注意设置验证控件的属性):

public static bool findPerson(string pID)
{
    SqlConnection con = personOperate.createCon();
    con.Open();
    SqlCommand cmd = new SqlCommand("select count(*)from person where pID='"+pID+"'",con);
    int count = Convert.ToInt32(cmd.ExecuteScalar());
    if (count > 0)
    {
        return true;
    }
       else
    {
        return false;
    }
}

此时就可以根据返回值的情况判断用户是否存在,在中有个一value属性,表示被验证表单字段的值,IsValid表示是否验证成功。

双击验证控件,在事件中编写代码:

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
   //被验证的字段
   string pID = args.Value;
   if (personOperate.findPerson(pID))
   {
        //表示没有验证成功
         args.IsValid = false;
    }
   else
    {
        //表示验证成功
         args.IsValid = true;
    }
}

对于查询用户是否存在已经完成了,下面是添加用户:

首先是在操作类中编写添加用户功能的代码:
public static bool insetOperate(person p)
{
            try
            {
                SqlConnection con = personOperate.createCon();
                con.Open();
                SqlCommand cmd = new SqlCommand("insert into person values(@pID,@pName,@pSex)", con);
                SqlParameter para = new SqlParameter("@pID", SqlDbType.VarChar, 10);
                para.Value = p.pID;
                cmd.Parameters.Add(para);
                para = new SqlParameter("@pName", SqlDbType.VarChar, 20);
                para.Value = p.pName;
                cmd.Parameters.Add(para);
                para = new SqlParameter("@pSex", SqlDbType.VarChar, 2);
                para.Value = p.pSex;
                cmd.Parameters.Add(para);
                cmd.ExecuteNonQuery();
                return true;
            }
            catch (Exception e)
            {
                return false;
            }
}

这次采用的是传参的形式。

双击添加按钮:

protected void btnAdd_Click(object sender, EventArgs e)
{
            if (this.IsValid)
            {
                person p = new person();
                p.pID = this.txtPID.Text;
                p.pName = this.txtName.Text;
                if (this.rBtnNan.Checked)
                {
                    p.pSex = "男";
                }
                else
                {
                    p.pSex = "女";
                }
                if (personOperate.insetOperate(p))
                {
                    Response.Write("插入成功");
                    this.fillDg();

                }
                else
                {
                    Response.Write("插入失败");
                }
            }        
}

此时用户添加成功。下面进行GridView控件绑定:

首先在操作类中编写查询所有用户的代码:

public static DataTable selectAllPerson()
{
            SqlConnection con = personOperate.createCon();
            SqlDataAdapter sda = new SqlDataAdapter();
            sda.SelectCommand = new SqlCommand("select * from person",con);
            DataSet ds = new DataSet();
            sda.Fill(ds, "person");
            return ds.Tables["person"];

}

这里返回的是DataTable类型。

在界面中绑定数据,这里编写了一个方法特地用来绑定数据的:

private void fillDg()
{
      this.GridView1.DataSource = personOperate.selectAllPerson();
      this.GridView1.DataBind();

 }

这样数据就绑定成功了。

总结这个小Demo,主要用到了验证控件和GridView控件,关于验证控件详细的用法这里不介绍了,另外一个就是整个例子的代码编写,下篇博客介绍利用GridView控件和视图过滤器实现数据的查询,如何更好的实现程序,在于一个好的编程习惯!







已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页