GridView自制数据源并显示图片

来源:互联网 发布:java定义日期格式 编辑:程序博客网 时间:2024/05/05 13:15

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列名就可以了
   

  

 
原创粉丝点击