GridView 常用方法合集

原创 2007年09月19日 16:41:00
在项目中主要用了gridview来显示数据,其中的方法都是常用的。
1、利用sqldatasource动态邦定数据,其中sqldatasource1是托放在页面的sqldatasource控件,将数据邦定到gridview1上面
    void gridviewband() {
            
try
            {
                SqlDataSource1.ConnectionString 
= ConfigurationSettings.AppSettings[ "sqlconn"];
                SqlDataSource1.SelectCommand 
= squerysql;
                GridView1.DataSource 
= SqlDataSource1;
                GridView1.DataBind();
                
//看有没有数据 如果没有数据 提示错误  lblresult的text的内容是错误信息  
                 int count = GridView1.Rows.Count;
                
if (count == 0) { lblresult.Visible  = true; }
                
else { lblresult.Visible  = false; }
            }
            
catch   (SqlException ex5)
            {
                
//提示错误信息
            }
            
finally {  
            }
    }

2、选择一行,获取关键字,然后传到其他页面
    protected void GridView1_SelectedIndexChanged( object sender, EventArgs e)
    {
//选择某一行
        Session[ "selectkey"= GridView1.SelectedDataKey.Value;
        Response.Redirect(
"~/employee/employeedetail.aspx");
    }

3、获取编辑行的关键字
         protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        
//编辑修改
        Session[ "editkey"= GridView1.DataKeys[e.NewEditIndex].Value.ToString();
        Response.Redirect(
"~/employee/employeeedit.aspx");
    }

4、删除一行,获取关键字。这个地方还是用rowdeleting 事件。
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
       
        String idno111 
= GridView1.DataKeys[e.RowIndex].Value.ToString();
        SqlDataSource1.DeleteCommand 
= "delete from empinfo where empnum=' " + idno111 + "'" 
            
+ "delete from employee where empnum=' " + idno111 + "'";
        
//删除行
         if (e.RowIndex >= 0)
        {

            String connectstr 
= ConfigurationSettings.AppSettings[ "sqlconn"];
            SqlConnection sqlconn 
= new SqlConnection(connectstr);
            sqlconn.Open();
            SqlCommand comm 
= new SqlCommand(SqlDataSource1.DeleteCommand, sqlconn);
            comm.ExecuteNonQuery();
            sqlconn.Close();
        }
    }

5、删除前提示关键字,不仅仅是提示“确认删除吗?” 而是提示“确认删除关键字是***的数据吗?”

首先在aspx文件脚本里面要设置 重要看的是gridview的标签里面要有
 DatakeyNames="关键字" 同时 CommandArgument='<%# Eval("departno") %>'  这两处要填写
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
        CellPadding
="4" DataKeyNames="departno" DataSourceID="SqlDataSource1" ForeColor="#333333"
        GridLines
="None" OnDataBound="CustomersGridView_DataBound" OnRowDeleting="GridView1_RowDeleting"
        OnRowEditing
="GridView1_RowEditing" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
        PageSize
="15" Width="800px" OnRowDataBound="GridView1_RowDataBound">
        
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        
<Columns>
            
<asp:BoundField DataField="departno" HeaderText="部门编号" SortExpression="departno" />
            
<asp:BoundField DataField="father" HeaderText="父级部门" SortExpression="father" />
            
<asp:BoundField DataField="departname" HeaderText="部门名称" SortExpression="departname" />
            
<asp:BoundField DataField="person" HeaderText="联系人" SortExpression="person" />
            
<asp:BoundField DataField="tel" HeaderText="固定电话" SortExpression="tel" />
            
<asp:BoundField DataField="mobiletel" HeaderText="手机" SortExpression="mobiletel" />
            
            
<asp:CommandField ButtonType="Image" HeaderText="查看" SelectImageUrl="~/icons/look.gif"
                SelectText
="查看" ShowSelectButton="True">
                
<HeaderStyle HorizontalAlign="Center" />
                
<ItemStyle HorizontalAlign="Center" />
            
</asp:CommandField>
            
<asp:CommandField ButtonType="Image" EditImageUrl="~/icons/edit.gif" EditText="编辑"
                HeaderText
="编辑" ShowEditButton="True">
                
<HeaderStyle HorizontalAlign="Center" />
                
<ItemStyle HorizontalAlign="Center" />
            
</asp:CommandField>
            
<asp:TemplateField HeaderText="删除" ShowHeader="False">
                
<ItemStyle HorizontalAlign="Center" />
                
<HeaderStyle HorizontalAlign="Center" />
                
<ItemTemplate>
                    
<asp:ImageButton ID="ImageButton1" runat="server" CausesValidation="False" CommandName="Delete"
                        ImageUrl
="~/icons/delete.gif" CommandArgument='<%# Eval("departno") %>' Text="删除" />
                
</ItemTemplate>
            
</asp:TemplateField>
        
</Columns>
        
        
<PagerTemplate>
            
<table width="100%">
                
<tr>
                    
<td width="70%">
                        
<asp:Label ID="MessageLabel" runat="server" Font-Size="Larger" ForeColor="Black"
                            Text
="页码:"></asp:Label>
                        
<asp:DropDownList ID="PageDropDownList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="PageDropDownList_SelectedIndexChanged" >
                        
</asp:DropDownList>
                        
<asp:LinkButton ID="linkBtnFirst" runat="server" CommandArgument="First" CommandName="Page"
                            ForeColor
="Black">首页</asp:LinkButton>
                        
<asp:LinkButton ID="linkBtnPrev" runat="server" CommandArgument="Prev" CommandName="Page"
                            ForeColor
="Black">上一页</asp:LinkButton>
                        
<asp:LinkButton ID="linkBtnNext" runat="server" CommandArgument="Next" CommandName="Page"
                            ForeColor
="Black">下一页</asp:LinkButton>
                        
<asp:LinkButton ID="linkBtnLast" runat="server" CommandArgument="Last" CommandName="Page"
                            ForeColor
="Black">末页</asp:LinkButton>
                    
</td>
                    
<td align="right" width="70%">
                        
<asp:Label ID="CurrentPageLabel" runat="server" ForeColor="black"></asp:Label>
                    
</td>
                
</tr>
            
</table>
        
</PagerTemplate>
        
        
<RowStyle BackColor="#EFF3FB" />
        
<EditRowStyle BackColor="#2461BF" />
        
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
        
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
        
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        
<AlternatingRowStyle BackColor="White" />
    
</asp:GridView>

然后在cs页面里填入事件:

    //删除某一行的时候要提示关键字  不仅是提示确认删除,departno是关键字
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        
if (e.Row.RowType == DataControlRowType.DataRow)
        {
            ImageButton l 
= (ImageButton)e.Row.FindControl( "ImageButton1" );
            l.Attributes.Add(
"onclick""javascript: return " +
            
"confirm('确认要删除部门编号为   " +
            DataBinder.Eval(e.Row.DataItem, 
"departno"+ " 的部门吗?" + "')");
        }
    }
}


这样删除的时候就能提示关键字了。

6、显示页码
显示页码要在aspx代码里填入几行数据,上面的代码已经有了 重新写一下:
代码放在 </Columns>下面

         <PagerTemplate>
            
<table width="100%">
                
<tr>
                    
<td width="70%">
                        
<asp:Label ID="MessageLabel" runat="server" Font-Size="Larger" ForeColor="Black"
                            Text
="页码:"></asp:Label>
                        
<asp:DropDownList ID="PageDropDownList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="PageDropDownList_SelectedIndexChanged" >
                        
</asp:DropDownList>
                        
<asp:LinkButton ID="linkBtnFirst" runat="server" CommandArgument="First" CommandName="Page"
                            ForeColor
="Black">首页</asp:LinkButton>
                        
<asp:LinkButton ID="linkBtnPrev" runat="server" CommandArgument="Prev" CommandName="Page"
                            ForeColor
="Black">上一页</asp:LinkButton>
                        
<asp:LinkButton ID="linkBtnNext" runat="server" CommandArgument="Next" CommandName="Page"
                            ForeColor
="Black">下一页</asp:LinkButton>
                        
<asp:LinkButton ID="linkBtnLast" runat="server" CommandArgument="Last" CommandName="Page"
                            ForeColor
="Black">末页</asp:LinkButton>
                    
</td>
                    
<td align="right" width="70%">
                        
<asp:Label ID="CurrentPageLabel" runat="server" ForeColor="black"></asp:Label>
                    
</td>
                
</tr>
            
</table>
        
</PagerTemplate>

然后在gridview的标签里面填入

OnDataBound="CustomersGridView_DataBound"

位置看 5 的代码就可以了。
然后再 cs代码区加入如下代码

//显示页码

    
protected void PageDropDownList_SelectedIndexChanged(Object sender, EventArgs e)
    {
        GridViewRow pagerRow 
= GridView1.BottomPagerRow;
        DropDownList pageList 
= (DropDownList)pagerRow.Cells[ 0].FindControl("PageDropDownList");
        GridView1.PageIndex 
= pageList.SelectedIndex;
    }

    
protected void CustomersGridView_DataBound(Object sender, EventArgs e)
    {
        
try
        {
            GridViewRow pagerRow 
= GridView1.BottomPagerRow;

            LinkButton linkBtnFirst 
= (LinkButton)pagerRow.Cells[ 0].FindControl("linkBtnFirst");
            LinkButton linkBtnPrev 
= (LinkButton)pagerRow.Cells[ 0].FindControl("linkBtnPrev");
            LinkButton linkBtnNext 
= (LinkButton)pagerRow.Cells[ 0].FindControl("linkBtnNext");
            LinkButton linkBtnLast 
= (LinkButton)pagerRow.Cells[ 0].FindControl("linkBtnLast");

            
if (GridView1.PageIndex  == 0)
            {
                linkBtnFirst.Enabled 
= false;
                linkBtnPrev.Enabled 
= false;
            }
            
else if (GridView1.PageIndex  == GridView1.PageCount - 1)
            {
                linkBtnLast.Enabled 
= false;
                linkBtnNext.Enabled 
= false;
            }
            
else if (GridView1.PageCount  <= 0)
            {
                linkBtnFirst.Enabled 
= false;
                linkBtnPrev.Enabled 
= false;
                linkBtnNext.Enabled 
= false;
                linkBtnLast.Enabled 
= false;
            }
            DropDownList pageList 
= (DropDownList)pagerRow.Cells[ 0].FindControl("PageDropDownList");
            Label pageLabel 
= (Label)pagerRow.Cells[0].FindControl("CurrentPageLabel");

            
if (pageList != null)
            {
                
for (int i = 0; i < GridView1.PageCount; i ++)
                {
                    
int pageNumber = i + 1;
                    ListItem item 
= new ListItem(pageNumber.ToString()  + "/" + GridView1.PageCount.ToString(), pageNumber.ToString());
                    
if (i == GridView1.PageIndex)
                    {
                        item.Selected 
= true;
                    }
                    pageList.Items.Add(item);
                }
            }
            
if (pageLabel != null)
            {
                
int currentPage = GridView1.PageIndex + 1;
                pageLabel.Text 
= "当前页: " + currentPage.ToString()  +
                  
" / " + GridView1.PageCount.ToString();
            }
        }
        
catch 
        {
            Response.Write(
"现在还没有该部门的记录!!");
        }
    }

如果发生异常,是应为没有数据。这时候可以在catch里面提示没有数据。这样就可以绑定页码了。
但是这样做的条件是没有把绑定数据放在 (!ispostback)里面,如果放在里面了,就会出问题
因为页面的代码实际上是控制显示第几页。但是绑定数据放在了!ispostback里面了,所以不能重新绑定。
这样的情况,要写那个绑定的方法。
然后在cs文件里写下面的代码:

    protected void PageDropDownList_SelectedIndexChanged(Object sender, EventArgs e)
    {
        GridViewRow pagerRow 
= GridView1.BottomPagerRow;
        DropDownList pageList 
= (DropDownList)pagerRow.Cells[ 0].FindControl("PageDropDownList");
        GridView1.PageIndex 
= pageList.SelectedIndex;
        gridviewband();
///重新绑定数据,这是特殊的地方
    }

    
protected void CustomersGridView_DataBound(Object sender, EventArgs e)
    {
        
try
        {
            GridViewRow pagerRow 
= GridView1.BottomPagerRow;

            LinkButton linkBtnFirst 
= (LinkButton)pagerRow.Cells[ 0].FindControl("linkBtnFirst");
            LinkButton linkBtnPrev 
= (LinkButton)pagerRow.Cells[ 0].FindControl("linkBtnPrev");
            LinkButton linkBtnNext 
= (LinkButton)pagerRow.Cells[ 0].FindControl("linkBtnNext");
            LinkButton linkBtnLast 
= (LinkButton)pagerRow.Cells[ 0].FindControl("linkBtnLast");

            
if (GridView1.PageIndex  == 0)
            {
                linkBtnFirst.Enabled 
= false;
                linkBtnPrev.Enabled 
= false;
            }
            
else if (GridView1.PageIndex  == GridView1.PageCount - 1)
            {
                linkBtnLast.Enabled 
= false;
                linkBtnNext.Enabled 
= false;
            }
            
else if (GridView1.PageCount  <= 0)
            {
                linkBtnFirst.Enabled 
= false;
                linkBtnPrev.Enabled 
= false;
                linkBtnNext.Enabled 
= false;
                linkBtnLast.Enabled 
= false;
            }
            DropDownList pageList 
= (DropDownList)pagerRow.Cells[ 0].FindControl("PageDropDownList");
            Label pageLabel 
= (Label)pagerRow.Cells[0].FindControl("CurrentPageLabel");

            
if (pageList != null)
            {
                
for (int i = 0; i < GridView1.PageCount; i ++)
                {
                    
int pageNumber = i + 1;
                    ListItem item 
= new ListItem(pageNumber.ToString()  + "/" + GridView1.PageCount.ToString(), pageNumber.ToString());
                    
if (i == GridView1.PageIndex)
                    {
                        item.Selected 
= true;
                    }
                    pageList.Items.Add(item);
                }
            }
            
if (pageLabel != null)
            {
                
int currentPage = GridView1.PageIndex + 1;
                pageLabel.Text 
= "当前页: " + currentPage.ToString()  +
                  
" / " + GridView1.PageCount.ToString();
            }
        }
        
catch //(Exception ex5)
        {
            Response.Write(
"现在还没有该部门的记录!!");
        }
    }
        
protected void GridView1_PageIndexChanging( object sender, GridViewPageEventArgs e)
    {
        
        GridView1.PageIndex 
= e.NewPageIndex;
        gridviewband();
//重新绑定数据
    }

这样就可以显示了 如果按照前面的方法会提示没有  pageindexchanging事件。 

相关文章推荐

xajaxResponse类的常用方法合集 xajax0.5

现在最新的XAJAX版本已经0.5 Beta4了。可是网上能找到的资料都只是0.25版的。没办法只好自己看源代码了。xajax的核心其实是xajaxResponse类,这里整理了一下它的常用方法:1....

黑马程序员之 ASP.NET学习笔记:GridView控件的常用属性及方法

GridView控件的常用属性 (1)AllowPaging属性 该属性默认为False,即不启用分页功能,若要允许分页则将该属性值改为True。 (2)AllowSorting属性 该属性默认为Fa...

AS技巧合集「常用技巧篇」

1. 书签(Bookmarks) 描述:这是一个很有用的功能,让你可以在某处做个标记(书签),方便后面再跳转到此处。 调用:Menu → Navigate → Bookmarks 快捷键...

Android软件开发之盘点常用系统控件界面大合集(三)

常用系统控件界面大合集 转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/6613004 雨松MOM...
  • GG_8080
  • GG_8080
  • 2012年02月23日 17:52
  • 220

Laravel 常用命令合集

配置Composer中国镜像(CDN加速):composer config -g repo.packagist composer https://packagist.phpcomposer.com 更...

git 命令合集,git 常用命令

初始化配置 C代码   #配置使用git仓库的人员姓名   git config --global user.name "Your Name Comes Here"   ...

Mac常用快捷键合集

通用Cmd-C 复制Cmd-V 贴上Cmd-X 剪下Option-移动 复制文件到新地址Cmd-移动 移动并自动对齐Cmd-Delete 删除Cmd-Option-移动 建立捷径Cmd-Shift-D...

Git安装、使用教程、遇到的问题和基本常用命令合集

最近几天在安装git但是遇到了很多问题经过多方查找,找到了几个真正实用的方法,在此分享一下: 1.Git使用教程 有点多,详见这个链接:Git使用教程和基本常用命令 2.遇到的问题  原文链接...

Android软件开发之盘点常用系统控件界面大合集

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://xys289187120.blog.51cto.com/3361352/657...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GridView 常用方法合集
举报原因:
原因补充:

(最多只允许输入30个字)