GridView

出自ProgWiki

跳轉到: 導航, 搜尋

GridViewSystem.Web.UI.WebControls.GridView


目錄

匯出

匯出成Execl

this.Response.Clear();
{
	using (System.IO.StringWriter sw = new System.IO.StringWriter())
	{
		using (HtmlTextWriter hw = new HtmlTextWriter(sw))
		{
			string strToday = DateTime.Now.ToString("d");
			this.Response.ContentType = "application/x-msexcel";
			this.Response.AddHeader("content-disposition", "attachment; filename=" + strToday + ".xls");
 
			this.GridView1.RenderControl(hw);
			this.Response.Write(sw.ToString());
		}
	}
}
this.Response.End();
//必須覆寫 Page.VerifyRenderingInServerForm 
public override void VerifyRenderingInServerForm(Control control)
{
}

其他轉資料到Execl的方法

滑鼠點選資料列, 快速進入編輯模式

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
	//標題列時, e.Row.RowIndex 則為 -1, 其他資料列的 e.Row.RowIndex 則從1開始增值
	if (e.Row.RowIndex != -1)
	{
		for (int i = 1; i < e.Row.Cells.Count; i++)
		{
			//onclick="javascript:__doPostBack('GridView1','Edit$1')"
 
			e.Row.Cells[i].Attributes["onclick"] = string.Format(
				"javascript:__doPostBack('GridView1','Edit${0}')",
				 e.Row.RowIndex );
			//style="cursor:hand" 在FireFox下不可用,應改為 style="cursor:pointer"
			e.Row.Cells[i].Style["cursor"] = "pointer";
		}
	}
}


GridView分頁效果

GridView分頁效果(1)

用法:

  1. 先下載它的範例[1]
  2. 解壓縮後,把它的範例裡的檔案 GridViewWithPager.cs 與 PagerLinkButton.cs 複製到你的網站的 App_Code 目錄裡。
  3. 在你的.aspx 頁面中加入相關的CSS定義(參照它的Default.aspx)。
  4. 在你的.aspx 頁面上,加入 <%@ Register Namespace="App_Code" TagPrefix="ac" %>
  5. 在你的.aspx 頁面上把 <asp:GridView 與 </asp:GridView> 分別置換為 <ac:GridViewWithPager UseCustomPager="true" 與 </ac:GridViewWithPager>

GridView分頁效果(2)

GridView分頁效果(其他)

滑鼠在資料列上移動時, 資料列改變底色

FAQ

為什麼在 GridView 裡所設定的 DataFormatString 沒有效?

發怖到遠端的IIS時,原本GridView的各行的【編輯】超連結,變成【Edit】

自動編號欄位

欄位內容不斷行

<HeaderStyle Wrap="False" />
<ItemStyle Wrap="False" /> 

在GridView下的Footer列加入合計的計算

多行檔頭

重複內容的欄位,垂直合併

在資料列上自訂按鈕

資料欄依條件變色

呈現RSS內容

GridView與FormView整合應用

GridView透過DataView.RowFilter去顯示經過篩選過後的資料

自訂GridView的排序

在GridView裡將\n轉換成Html的斷行

<ItemTemplate>
	<%# ((string)Eval("Details")).Replace("\n", "<br/>") %>
</ItemTemplate>
或
<ItemTemplate>
	<%# FormatString(Eval("Details")) %>
</ItemTemplate>

GridView減肥

在Header放上刪除的按鈕

<asp:TemplateField HeaderStyle-Width="57px" ItemStyle-HorizontalAlign="Center">
    <HeaderTemplate>
        <asp:IButton ID="ButtonDeleteSelect" runat="server" CausesValidation="False" 
            Text="刪除" 
            OnClientClick="return confirm('你確定要刪除嗎?');" 
            OnClick="ButtonDeleteSelect_Click"/>
    </HeaderTemplate>
    <ItemTemplate>
        <asp:CheckBox ID="CheckBox1" runat="server" />
    </ItemTemplate>
</asp:TemplateField>
protected List<string> SelectID = new List<string>();
protected void ButtonDeleteSelect_Click(object sender, EventArgs e)
{
        SelectID.Clear();
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            CheckBox CheckBox1 = GridView1.Rows[i].Cells[0].FindControl("CheckBox1") as CheckBox;
            if (CheckBox1.Checked == true)
            {
                SelectID.Add(GridView1.DataKeys[i].Value.ToString());
            }
        }
 
        if (SelectID.Count > 0)
        {
            //實際操作DB作刪除資料的動作...
        }
}

GridView裡的控制項事件失效

protected void Page_Load(object sender, EventArgs e)
{
        if (!this.IsPostBack)
            GridView1_DataBinding();
}
protected void GridView1_DataBinding()
{
        GridViewHelper.setDataBinding(GridView1, SqlDataSource1, ViewState);
}
 
 
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
        GridViewHelper.setSorting(sender, e, ViewState);
        GridView1_DataBinding();
}
 
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
        this.GridView1.PageIndex = e.NewPageIndex;
        GridView1_DataBinding();
}
 
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
        GridView3.EditIndex = e.NewEditIndex;
        GridView3_DataBinding(); 
}
 
protected void GridView3_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
        GridView1.EditIndex = -1;
        GridView1_DataBinding(); 
}
 
==其他==
* [http://www.knowsky.com/340029.html ASP.NET2.0下含有DropDownList的GridView编辑、删除的完整例子!]
* [http://www.microsoft.com/taiwan/msdn/columns/huang_jhong_cheng/ASP_NET_GridView.htm ASP.NET 2.0 GridView 範例集]
* [http://www.dotblogs.com.tw/jeff377/archive/2008/10/27/5793.aspx 讓你的 GridView 與眾不同]
* [http://hi.baidu.com/leosoft/blog/item/61b998bfd501770618d81f0b.html 在空的GridView中显示Header、Footer列@ASP.Net]
* [http://tw.myblog.yahoo.com/jw!UIpaLOyBBQRqPnlwtNFErQ--/article?mid=325&next=324&l=f&fid=9 GridView中的Templete中的Control的格式化]
 
[[Category:GridView]]
個人工具
名字空間
變換
動作
導航
分類
其他
技術類News或部落格
工具箱