1:GridView不仅能绑定数据库而且我们自己也可以写DataTable数据源:
protected void Page_Load(object sender, EventArgs e)

...{
bind();
}

protected void bind()

...{
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(Int32));
dt.Columns.Add("username", typeof(string));
dt.Columns.Add("userpass", typeof(string));
dt.Columns.Add("picurl", typeof(string));

DataRow dr = dt.NewRow();
dr["id"] = 1;
dr["username"] = "admin";
dr["userpass"] = "admin";
dr["picurl"]="~/image/ming_boy.jpg";
dt.Rows.Add(dr);

dr = dt.NewRow();
dr["id"] = 2;
dr["username"] = "admin2";
dr["userpass"] = "admin2";
dr["picurl"] = "~/image/ming_girl.jpg";
dt.Rows.Add(dr);

GridView1.DataSource = dt;
GridView1.DataBind();
}

2:编写一个连接类,可以删除等,可以作为SqlDataSource的数据源


因为用数据集做为数据源总是不能更新....相当郁闷..说什么找不到参"@Original_uid",就更新时找不到...那删除时怎么可以列.uid肯定是关键字段拉...哎~没办法,只有自己写类来完成操作拉...不错生成了一系列的存储过程,不用写SQL语句了,还算比较好写吧...-_-~ 其实我写了好久...下面是源代码,其实感觉还可以简单点,懒的改了!!!~

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;


/**//// <summary>
/// sqldb 的摘要说明
/// </summary>
public class sqldb

...{
private SqlConnection con;
private SqlCommand cmd;
private SqlDataAdapter sda;
private DataSet ds;
public sqldb()

...{
con=new SqlConnection(ConfigurationManager.ConnectionStrings["sjkConnectionString"].ConnectionString);
cmd=new SqlCommand();
ds=new DataSet();
sda=new SqlDataAdapter();
}


public DataSet select()

...{

sda.SelectCommand=new SqlCommand("NewSelectCommand", con);
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
sda.Fill(ds,"sql");
return ds;
}


public void delete(Int32 uid)

...{
cmd.CommandText = "NewDeleteCommand";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
cmd.Parameters.AddWithValue("@Original_uid",uid);
con.Open();
cmd.ExecuteNonQuery();


}

// public void insert(string username, string usrepass)
// {
// cmd.CommandType = CommandType.StoredProcedure;
// cmd.Connection = con;
// cmd.CommandText = "NewDeleteCommand";
// cmd.Parameters.AddWithValue(@username,usernam);
// cmd.Parameters.AddWithValue(@userpass,userpass);
// con.Open();
// cmd.ExecuteNonQuery();
// con.Close();

//}


public void update(string username, string userpwd, Int32 uid)

...{
cmd.CommandText = "NewUpdateCommand";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
cmd.Parameters.AddWithValue("@username",username);
cmd.Parameters.AddWithValue("@userpwd",userpwd);
cmd.Parameters.AddWithValue("@Original_uid",uid);
cmd.Parameters.AddWithValue("@uid",uid);
con.Open();
cmd.ExecuteNonQuery();

}

}



看完代码后,感觉好基础...可为什么我写了好久呢?? 在这里我就总结一写好了:

1,使用sqldataadaper时,初始化时直接用的sda.selectcommand="....." ; 后来编译告诉我把什么属性当方法用了..后来才该为sda.selectcommand=new sqlcommand(:"" ,) ;

2.在可以运行时发现删除总是无效,因为也没报错,来回改了半天的代码....后了想了想,这个方法只用了一个参数uid这个值怎么获得呢? 答案: 主建!!!! 把gridview的datakeynames设置为uid列可以了,严重的失误啊...

3.cmd.Parameters.AddWithValue("@uid",uid); 这种格式....第一个参数要加 " " ,并且要和存储过程一样的变量...

4.写方法的时候想了半天返回类型,其实只要查询使用dataset,其他的都为VOID就可以了...呵呵

5.暂时没总结出来....

不足的是插入没有在gridvie内部,是在外部用button_onclick事件来添加的,我没修改gridview模版....懒的做了....


2:在GridView中显示图片:
在gridview中添加一个ImageField列,将它的DataImageUrlField属性设置为我们刚才定义的picurl列名就可以了
