GridView控件是asp.net开发中经常用到的控件之一,本网页设计教程详细介绍GridView的使用方法
前台.aspx 复制代码 代码如下: <asp:Label ID="tplb" runat="server" Text="总页数:"></asp:Label> <asp:Label ID="lblPageCount" runat="server" Text=""></asp:Label> <asp:Label ID="curLabel" runat="server" Text="当前页:"></asp:Label> <asp:Label ID="lblPage" Text="1" runat="server"></asp:Label> <asp:LinkButton ID="lblFirstButton" runat="server" OnClick="lblFirstButton_Click" >|<</asp:LinkButton> <asp:LinkButton ID="lblPreButton" runat="server" OnClick="lblPreButton_Click" ><</asp:LinkButton> <asp:LinkButton ID="lblNextButton" runat="server" OnClick="lblNextButton_Click" >></asp:LinkButton> <asp:LinkButton ID="lblLastButton" runat="server" OnClick="lblLastButton_Click" >>|</asp:LinkButton> <asp:DropDownList ID="ddlPage" runat="server" Width="40px" AutoPostBack="True" OnSelectedIndexChanged="ddlPage_SelectedIndexChanged"> <asp:ListItem>10</asp:ListItem> <asp:ListItem>15</asp:ListItem> <asp:ListItem>20</asp:ListItem> <asp:ListItem>30</asp:ListItem> </asp:DropDownList> <asp:Label ID="PageSizeLabel" runat="server" Text="条/页"></asp:Label>
后台 复制代码 代码如下: #region分页 protected void BindFollowExamInfoGridView(int PersonID) { int currentpage = Convert.ToInt32(lblPage.Text); DataTable dt = new DataTable(); dt = feibf.GetByPersonIDFollowExamInfo(PersonID); //查询指定人的随访信息记录 if (dt.Rows.Count > 0) { FollowExamInfoGridView.DataSource = dt; FollowExamInfoGridView.DataBind(); PagedDataSource ps = new PagedDataSource(); ps.DataSource = dt.DefaultView; ps.AllowPaging = true; ps.PageSize = Convert.ToInt32(ddlPage.SelectedValue); lblPageCount.Text = ps.PageCount.ToString(); this.lblPreButton.Enabled = true; this.lblNextButton.Enabled = true; ps.CurrentPageIndex = currentpage - 1; if (currentpage == 1) { this.lblPreButton.Enabled = false; this.lblFirstButton.Enabled = false; } else { this.lblPreButton.Enabled = true; this.lblFirstButton.Enabled = true; } if (currentpage == ps.PageCount) { this.lblNextButton.Enabled = false; this.lblLastButton.Enabled = false; } else { this.lblNextButton.Enabled = true; this.lblLastButton.Enabled = true; } FollowExamInfoGridView.DataSource = ps; FollowExamInfoGridView.DataBind(); } } protected void lblPreButton_Click(object sender, EventArgs e) { this.lblPage.Text = Convert.ToString(Convert.ToUInt32(lblPage.Text) - 1); BindFollowExamInfoGridView(Convert.ToInt32(Request.QueryString["PersonID"])); } protected void lblNextButton_Click(object sender, EventArgs e) { this.lblPage.Text = Convert.ToString(Convert.ToUInt32(lblPage.Text) + 1); BindFollowExamInfoGridView(Convert.ToInt32(Request.QueryString["PersonID"])); } protected void lblFirstButton_Click(object sender, EventArgs e) { this.lblPage.Text = "1"; BindFollowExamInfoGridView(Convert.ToInt32(Request.QueryString["PersonID"])); } protected void lblLastButton_Click(object sender, EventArgs e) { this.lblPage.Text = lblPageCount.Text; BindFollowExamInfoGridView(Convert.ToInt32(Request.QueryString["PersonID"])); } protected void ddlPage_SelectedIndexChanged(object sender, EventArgs e) { lblPage.Text = "1"; BindFollowExamInfoGridView(Convert.ToInt32(Request.QueryString["PersonID"])); } #endregion
排序 Allowsort = "true" sortExpression = "ID" DataView dv = SortBindGrid(dt); #region排序 protected void FollowExamInfoGridView_Sorting(object sender, GridViewSortEventArgs e) { ViewState["sortexpression"] = e.SortExpression; if (ViewState["sortdirection"] == null) { ViewState["sortdirection"] = "asc"; } else { if (ViewState["sortdirection"].ToString() == "asc") { ViewState["sortdirection"] = "desc"; } else { ViewState["sortdirection"] = "asc"; } } BindFollowExamInfoGridView(Convert.ToInt32(HiddenPersonID.Value)); } public DataView SortBindGrid(DataTable table) { if (table != null) { DataView dv = table.DefaultView; if (ViewState["sortexpression"] != null && ViewState["sortdirection"] != null) { dv.Sort = ViewState["sortexpression"].ToString() + " " + ViewState["sortdirection"].ToString(); } return dv; } else { return null; } } #endregion
=======自带分页 #region自带分页
protected void FollowExamInfoGridView_PageIndexChanging(object sender, GridViewPageEventArgs e) { FollowExamInfoGridView.PageIndex = e.NewPageIndex; BindFollowExamInfoGridView(Convert.ToInt32(HiddenPersonID.Value)); } #endregion
选中Grid View 的实现 复制代码 代码如下: #region实现选中行 <SelectedRowStyle BackColor="AliceBlue" ForeColor="Gray" /> <asp:CommandField ShowSelectButton="True"/> if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Attributes.Add("onclick", "this.cells[0].childNodes[0].click()"); } protected void GridViewRegiment_SelectedIndexChanged(object sender, EventArgs e) { GridViewRow row = GridViewRegiment.SelectedRow; int RegimentID = Convert.ToInt32(row.Cells[1].Text); Response.Redirect("UpdateRegimentation.aspx?RegimentID=" + RegimentID); } #endregion
显示颜色和删除 复制代码 代码如下: protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { //int i; //for (i = 0; i < GridViewRegiment.Rows.Count; i++) //{ if (e.Row.RowType == DataControlRowType.DataRow) { //当有编辑列时,避免出错,要加的RowState判断 if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate) { ((ImageButton)e.Row.Cells[2].FindControl("IBtndelete")).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:"" + e.Row.Cells[0].Text + ""吗?')"); } e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#00A9FF'"); e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#E6F5FA'"); } //} }
GridView空的处理 1 显示无表头的空纪录,EmptyDataText="没有记录" 2 显示表头的空纪录 复制代码 代码如下: DataTable dt = new DataTable(); dt = feibf.GetByPersonIDFollowExamInfo(PersonID); //查询指定人的随访信息记录 DataView dv = SortBindGrid(dt); if (dt.Rows.Count > 0) { FollowExamInfoGridView.DataSource = dv; FollowExamInfoGridView.DataBind(); } else { //添加新行显示表头 dt.Rows.Add(dt.NewRow()); FollowExamInfoGridView.DataSource = dt; FollowExamInfoGridView.DataBind(); //处理新行 int columnCount = FollowExamInfoGridView.Rows[0].Cells.Count; //清除掉该空行的全部单元格 FollowExamInfoGridView.Rows[0].Cells.Clear(); //新建单元格对象 FollowExamInfoGridView.Rows[0].Cells.Add(new TableCell()); //合并单元格 FollowExamInfoGridView.Rows[0].Cells[0].ColumnSpan = columnCount; //设置单元格提示内容 FollowExamInfoGridView.Rows[0].Cells[0].Style.Value = "text-align:center"; FollowExamInfoGridView.Rows[0].Cells[0].Text = "此人无随访信息"; }
GridView 的导出 EnableEventValidation="false" 复制代码 代码如下: #region导出 public override void VerifyRenderingInServerForm(Control control) { } protected void BtnPrint_Click(object sender, EventArgs e) { Response.Clear(); Response.Buffer = true; Response.Charset = "GB2312"; Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls"); // 如果设置为GetEncoding("GB2312");导出的文件将会出现乱码!!! Response.ContentEncoding = System.Text.Encoding.UTF7; Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 System.IO.StringWriter oStringWriter = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); this.AfficheGV.RenderControl(oHtmlTextWriter); Response.Output.Write(oStringWriter.ToString()); Response.Flush(); Response.End(); } #endregion
ToolTip GridView详细信息的显示 前台 <script type="text/javascript" > function Tooltip(cella,cellb) { document.getElementById("dc").innerText = "详细信息:"+cellb; document.getElementById("id").innerText = "ID:"+cella; x= event.clientX+document.body.scrollLeft; y=event.clientY+document.body.scrollTop+20; toolTipLayer.style.display="inline"; toolTipLayer.style.left=x; toolTipLayer.style.top=y; } </script> <div id="toolTipLayer" style=" position:absolute; display:none; background-color:Aqua; border-color:Blue; border-style:solid; border-color:Blue; border-width:1px; " > <table> <tr><td>Affiche</td></tr> <tr><td id ="dc"></td></tr> <tr><td id ="id"> </td></tr> </table> </div>
后台 复制代码 代码如下: protected void AfficheGV_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate) { 1 e.Row.Attributes.Add("onmouseover", "Tooltip('" +e.Row.Cells[0].Text.ToString()+ "','"+e.Row.Cells[1].Text.ToString()+"')"); 2 e.Row.Attributes.Add("onmouseover","javascript:Tooltip('e.Row.Cells[0].Text');"); 3 e.Row.Attributes.Add("onmouseover", "Tooltip('e.Row.Cells[0].Text')"); } } }
#region自带编辑 protected void GVAffiche_RowEditing(object sender, GridViewEditEventArgs e) { GVAffiche.EditIndex = e.NewEditIndex; BindGVAffiche(); } protected void GVAffiche_RowDeleting(object sender, GridViewDeleteEventArgs e) { GVAffiche.EditIndex = -1; MyAffiche.DelAfficeBF( Convert.ToInt32(GVAffiche.DataKeys[e.RowIndex].Value.ToString())); BindGVAffiche(); } protected void GVAffiche_RowUpdating(object sender, GridViewUpdateEventArgs e) { int id = Convert.ToInt32(((TextBox)(GVAffiche.Rows[e.RowIndex].Cells[0].Controls[0])).Text.ToString().Trim()); string dc = ((TextBox)(GVAffiche.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim(); MyAffiche.UpdateAfficheBf(id,dc); GVAffiche.EditIndex = -1; BindGVAffiche(); } protected void GVAffiche_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GVAffiche.EditIndex = -1; BindGVAffiche(); } #endregion
#region样式的控制 protected void GVAffiche_RowDataBound(object sender, GridViewRowEventArgs e) { //首先判断是否是数据行 if (e.Row.RowType == DataControlRowType.DataRow) { //当有编辑列时,避免出错,要加的RowState判断 if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate) { ((Button)e.Row.Cells[7].FindControl("btnDel")).Attributes.Add("onclick","javascript:return confirm('你确认删除:"" + e.Row.Cells[1].Text + ""')"); //当鼠标停留时更改背景色 e.Row.Attributes.Add("onmouseover", "color=this.style.backgroundColor;this.style.backgroundColor='#00A9FF'"); //当鼠标移开时还原背景色 e.Row.Attributes.Add("onmouseout","this.style.backgroundColor=color"); GVAffiche.Attributes.Add("style", "word-break:keep-all;word-wrap:normal"); //GVAffiche.Attributes.Add("style", "word-break:break-all;word-wrap:break-word"); if (e.Row.Cells[1].Text == "444") { e.Row.Cells[1].BackColor = System.Drawing.Color.Red; } } } } #endregion
以上是GridView控件的一些基础使用大全,希望对大家有所用处。 |