GridView基本应用

 

GridView基本应用
GridView有很多技巧,但是常用的不多,这些基本技巧必须达到手写的熟练程度.
其他技巧都以此为基础.

1.设置AutoGenerateColumns为false

2.boundfield设置只读,则处于编辑状态时,不变为编辑框.
 只读字段的取值方法.
 <asp:boundfield DataField="userid" HeaderText="编号" ReadOnly="True" />
 string id = gv_base.Rows[e.RowIndex].Cells[0].Text;
 非只读字段的取值方法.
 <asp:boundfield DataField="username" HeaderText="用户名" />
 string uname = ((TextBox)gv_base.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
 注意:编辑,更新,取消属性一列即Columns[3].Controls[0]或[1]或[2]

3.控制列的显示隐藏
 if (gv_base.Columns[5].Visible == false)
  gv_base.Columns[5].Visible = true;
 else
  gv_base.Columns[5].Visible = false;
 

4.commandfield
 不管编辑,更新,取消,都需要重新绑定.
 注意点编辑时也需要重新绑定.
 意义:给GridView标记了要编辑的行,然后绑定时,到了那一行,就会显示编辑模板.

5.设置主键 DataKeyNames="userid"
 取值方法
 string key = gv_base.DataKeys[e.RowIndex].Value.ToString();
 多个主键时的设置和取值方法
 设置
 DataKeyNames="userid,username"
 取值
 string key = gv_base.DataKeys[e.RowIndex].Values[0].ToString();
 string key1 = gv_base.DataKeys[e.RowIndex].Values[1].ToString();

6.删除操作的特殊性,由于所有列都处于只读状态,所以可以全部用此法取值.
    string id = gv_base.Rows[e.RowIndex].Cells[0].Text;
    string uname = gv_base.Rows[e.RowIndex].Cells[1].Text;
   
7.为删除按钮添加js函数
    private void Bind()
    {
        gv_base.DataSource = OleDbHelper.ExecuteDt("select * from userinfo");
        gv_base.DataBind();
        for (int i = 0; i < gv_base.Rows.Count; i++)
        {
            ((LinkButton)(gv_base.Rows[i].Cells[4].Controls[0])).Attributes.Add
                ("onclick", "javascript:if(confirm('确定删除?')!=1){return false}");
        }
    }
    问题,这段代码不管放在Page_Load还是Bind()里均会出现问题,就是进入编辑状态后,列号改变了.
    似乎应该放在DataBound里?

8.链接列的应用
 <asp:hyperlinkfield DataNavigateUrlFields="userid,power"
 DataNavigateUrlFormatString="Detail.aspx?id={0}&amp;power={1}"
 HeaderText="详情" Target="_blank" Text="详细内容" />
 
9.问题
 进入编辑状态时,删除按钮找不到了.

10.分页原理,别忘了,设置AllowPaging="True"
    protected void gv_base_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gv_base.PageIndex = e.NewPageIndex;
        Bind();
        Response.Write("第" + e.NewPageIndex + "页,共" + gv_base.PageCount + "页");
    }
    把这段代码可以放在其他函数,比如一个按钮事件里.
    gv_base.PageIndex = 1;
        Bind();
 
 

 

posted @ 2009-12-25 11:53  你妹的sb  阅读(275)  评论(0编辑  收藏  举报
百度一下