asp.net学习旅程5(GridView特别篇,上)

1,数据绑定查询
这个些代码比较通用.主要是为了理清思路.可以有不同的实现.
SqlConnection sqlcon;
SqlCommand sqlcom;
string strConn = "Data Source=(local);Database=TestDB;Uid=sa;Pwd=123456"//连接字符串

string strsql = "select * from tablename where";
sqlcon 
= new SqlConnection(strConn); 

//打开数据连接
SqlDataAdapter myda = new SqlDataAdapter(strsql, sqlcon);
DataSet myds 
= new DataSet();
sqlcon.Open();

//将结果绑定到指定DataSet中                         
myda.Fill(myds, "cuabase");           
gridview1.DataSourceID 
= null;       
gridview1.DataSource 
= myds;
gridview1.DataKeyNames 
= new string[] { "字段名" };

//显示并关闭连接
gridview1.DataBind();
sqlcon.Close();

2.自定义超级连接
GridView自带的编辑功能感觉很弱.一般都是点击编辑后跳转到相应的页面进行修改.
首先编辑字段添加列...
  

然后在属性->DataNavigateUrlFeild添加要Get传递数据的字段标志
在DataNavgateUrlFromat 添加要掉转页面的格式
例如:page.aspx?cusid={0} 0为占位符


在行为->NavigateUrl添加要跳转页面
 

要想在相应的界面接收数据则代码如下.

string strName = HttpContext.Current.Request.QueryString["cusid"];
//long id = long.Parse(this.Request.QueryString["cusid"].ToString());
string strRes = "This is the response from the server:\r\n" + "Hello, " + strName + "!";

HttpContext.Current.Response.Clear();
//清除缓冲区流中的所有内容输出。

HttpContext.Current.Response.Write(strRes); 
//将信息写入 HTTP 响应输出流。

HttpContext.Current.Response.Flush();
//向客户端发送当前所有缓冲的输出。

HttpContext.Current.Response.End();
//将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发EndRequest 事件(停止请求)。

3,在GridView中CheckBox的处理
(1)记录的Check的选择判断,得到选择记录的索引
protected void Button2_Click(object sender, EventArgs e)
{   
     TextBox2.Text 
= "";
        
     
for (int i = 0; i < gridview1.Rows.Count;i++ )
     {
            
//i为GridView1 的第i行,j为GridView1的第j列
            
//CheckBox chk = (CheckBox)gridview1.Rows[i].Cells[j].FindControl("CheckBox2");
            
            CheckBox chk 
= (CheckBox)gridview1.Rows[i].Cells[0].FindControl("CheckBox2");
            
if (chk.Checked==true)
            {
                TextBox2.Text 
= TextBox2.Text + (i+1).ToString();
            }
     }
               
}

(2)Check的全部选择
添加Check改变事件,如果为选中状态则将所有记录的CheckBox全部选中,配合ajax效果最好
    protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
        
int i;
        
if (((CheckBox)sender).Checked)
        {
            
for (i = 0; i < gridview1.Rows.Count; i++)
            {
                ((CheckBox)gridview1.Rows[i].FindControl(
"CheckBox2")).Checked = true;//找到那一列模板的ID值
            }
        }
        
else
        {
            
for (i = 0; i < gridview1.Rows.Count; i++)
            {
                ((CheckBox)gridview1.Rows[i].FindControl(
"CheckBox2")).Checked = false;
            }
        }
    }

今天就到这里...这只是上篇...不过随着慢慢的了解可能还有中篇..下篇1,下篇2,下篇N......
posted @ 2009-08-06 23:48  独奏者  阅读(236)  评论(0编辑  收藏  举报