GridView应用总结
来源:互联网 发布:mac无法登陆app store 编辑:程序博客网 时间:2024/05/17 02:04
081229没有数据时显示列名的方法:即增加一空行
http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=7233
- if (dt.Rows.Count > 0)
- return dt;
- else
- {
- dt.Rows.Add(dt.NewRow());
- return dt;
- }
实例一:
前台:
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="stu_GridView.aspx.cs" Inherits="stu_GridView" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head runat="server">
- <title>无标题页</title>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- <asp:GridView ID="gv" runat="server" AutoGenerateColumns="false" >
- <Columns>
- <asp:BoundField HeaderText="编号" DataField="id" />
- <asp:HyperLinkField DataTextField="name" Text="姓名" DataNavigateUrlFields="id" DataNavigateUrlFormatString="default.aspx?{0}" />
- <asp:BoundField HeaderText="时间" DataField="date" DataFormatString="{0:yyyy-MM-dd}" />
- </Columns>
- </asp:GridView>
- </div>
- </form>
- </body>
- </html>
后台:
- public partial class stu_GridView : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- Bind();
- }
- private void Bind()
- {
- DataTable dt = new DataTable();
- //增加列
- dt.Columns.Add("id");
- dt.Columns.Add("name");
- dt.Columns.Add("date");
- //新建一行
- DataRow dr = dt.NewRow();
- dr[0] = "1";
- dr[1] = "tree";
- dr[2] = DateTime.Now;
- //添加一行
- dt.Rows.Add(dr);
- gv.DataSource = dt;
- gv.DataBind();
- }
- }
实例二:最基本最实用最常用
下载地址http://download.csdn.net/source/871334
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}&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();
前台
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="baseuse_Default" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head runat="server">
- <title>GridView基本应用</title>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- <asp:gridview ID="gv_base" runat="server" AutoGenerateColumns="False" DataKeyNames="userid,username" OnRowCancelingEdit="gv_base_RowCancelingEdit" OnRowEditing="gv_base_RowEditing" OnRowUpdating="gv_base_RowUpdating" OnRowDeleting="gv_base_RowDeleting" OnPageIndexChanging="gv_base_PageIndexChanging" AllowPaging="True" PageSize="3">
- <columns>
- <asp:boundfield DataField="userid" HeaderText="编号" ReadOnly="True" />
- <asp:boundfield DataField="username" HeaderText="用户名" />
- <asp:boundfield DataField="password" HeaderText="密码" />
- <asp:commandfield ShowEditButton="True" />
- <asp:commandfield ShowDeleteButton="True" />
- <asp:hyperlinkfield DataNavigateUrlFields="userid,power" DataNavigateUrlFormatString="Detail.aspx?id={0}&power={1}"
- HeaderText="详情" Target="_blank" Text="详细内容" />
- </columns>
- </asp:gridview>
- <br />
- <asp:button ID="btn_control" runat="server" OnClick="btn_control_Click" Text="控制详情列的显示" />
- </div>
- </form>
- </body>
- </html>
后台
- using System;
- using System.Data;
- using System.Configuration;
- using System.Collections;
- 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;
- public partial class baseuse_Default : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!IsPostBack)
- {
- Bind();
- }
- }
- private void Bind()
- {
- gv_base.DataSource = OleDbHelper.ExecuteDt("select * from userinfo");
- gv_base.DataBind();
- }
- protected void gv_base_RowEditing(object sender, GridViewEditEventArgs e)
- {
- gv_base.EditIndex = e.NewEditIndex;
- Bind();//设置编辑行后,需要重新绑定.
- }
- protected void gv_base_RowUpdating(object sender, GridViewUpdateEventArgs e)
- {
- string id = gv_base.Rows[e.RowIndex].Cells[0].Text;//当设置绑定字段为只读时,这样取值.
- string uname = ((TextBox)gv_base.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
- //设置主键时的取值方法.
- string key = gv_base.DataKeys[e.RowIndex].Values[0].ToString();
- string key1 = gv_base.DataKeys[e.RowIndex].Values[1].ToString();
- Response.Write(id + uname + key + key1);
- gv_base.EditIndex = -1;
- Bind();
- }
- protected void gv_base_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
- {
- gv_base.EditIndex = -1;
- Bind();
- }
- protected void gv_base_RowDeleting(object sender, GridViewDeleteEventArgs e)
- {
- string id = gv_base.Rows[e.RowIndex].Cells[0].Text;
- string uname = gv_base.Rows[e.RowIndex].Cells[1].Text;
- Response.Write(id + uname);
- Bind();
- }
- protected void btn_control_Click(object sender, EventArgs e)
- {
- if (gv_base.Columns[5].Visible == false)
- gv_base.Columns[5].Visible = true;
- else
- gv_base.Columns[5].Visible = false;
- gv_base.PageIndex = 1;
- Bind();
- }
- protected void gv_base_PageIndexChanging(object sender, GridViewPageEventArgs e)
- {
- gv_base.PageIndex = e.NewPageIndex;
- Bind();
- Response.Write("第" + e.NewPageIndex + "页,共" + gv_base.PageCount + "页");
- }
- }
end
- GridView应用总结
- .Net GridView应用:GridView 使用方法总结
- GridView应用
- GridView应用
- gridview应用
- GridView应用
- GridView应用
- gridView总结
- GridView总结
- GridView总结
- GridView删除,编辑应用
- vs2005应用之GridView
- GridView 的扩展应用
- GridView页脚应用
- gridview的应用点滴
- GridView基础应用一
- gridview灵活应用
- Gridview应用技巧收集
- VC调试方法
- 文盲的 JavaScript 实战篇之一:表单验证
- 定时器
- CREATE DATA
- 摩根士丹利:3亿儿童拉动中国动漫市场
- GridView应用总结
- ASP 显示数据库中表名、字段名、字段内容(只知道数据库文件路径和文件名)
- DataList应用总结
- 实现向数据库中任何表中添加、删除、修改内容
- 中断、DMA、通道
- JAVA学习提高之----Java的多种方式读写Properties文件
- fso实现整个文件夹内容的复制到另一个文件夹中
- ASCII编码表
- 累了?!