软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 网络编程 > ASP.NET > ASP.NET GridView中使用搜索框(SearchableGridView)

ASP.NET GridView中使用搜索框(SearchableGridView)

介绍:

我正在搜寻一种方法实现在ASP.NET GridView控件包含搜索框。我找不到一个完美的解决方案,决定自己去实现它。这里所以写出我的解决方案。

为什么使用这种方案?

您可以使用此种方案和实施行的表格过滤变得非常容易。搜索和过滤操作可以由公正处理的搜索事件引发。此外,该GridView还可以设置选项以显示行序列号,行的总数,并显示页眉和页脚即使没有行在GridView可用。 (默认情况下,页眉和页脚是隐藏,当GridView没有数据行。)

该解决方案

我做了什么

1.我扩展GridView和创建了一个SearchableGridView类。
2.添加了一个TemplateColumn显示行数。

3. 在页脚,添加了控件来处理搜查事件。
4.当开启搜索的时候,,传递搜索字符串给触发的事件。

代码:

1、通过创建了一个SearchableGridView来扩展GridView,实现在Gridview的页脚有一个搜索框.

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com]
public class NumberColumn : ITemplate
{
public void InstantiateIn(Control container)
{
}
}

在SearchableGridView类中,我重写的OnInit函数添加模板的第一列显示的行序号,如果ShowRowNumber标记将被打开。

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com]
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
//If showrownumber option is turned on then add
//the template column as the first column.
if (!IsDesign() && ShowRowNumber)
{
TemplateField tmpCol = new TemplateField();
NumberColumn numCol = new NumberColumn();
tmpCol.ItemTemplate = numCol;
// Insert this as the first column
this.Columns.Insert(0, tmpCol);
}
}

当每一行创建时,该OnRowCreated方法被执行。在此期间时,对创建的行类型的不同,在表尾,我们添加搜索控件和显示行数量label,在表身,添加行数,在表头,该添加列标题。 

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com]
protected override void OnRowCreated(GridViewRowEventArgs e)
{
base.OnRowCreated(e);
if (!IsDesign()) //During Runtime
{
if (e.Row.RowType == DataControlRowType.Footer)
{
//If ShowFooter is set to true
if (ShowFooter && e.Row.Cells.Count > 0)
{
//If TotalRows has to be shown
if (ShowTotalRows)
{
e.Row.Cells[0].Text = ViewState[NO_OF_ROWS] + " Rows.";
}
if (e.Row.Cells[e.Row.Cells.Count - 1].Controls.Count == 0)
{
//Create the search control
Table table = new Table();
table.Style.Add("width", "100%");
table.Style.Add("align", "right");
TableRow tr = new TableRow();
TableCell tc = new TableCell();
tc.Style.Add("align", "right");
tc.Style.Add("width", "100%");
//Populate the dropdownlist with the Ids
//of the columns to be filtered
if (_ddlFinder.Items.Count == 0)
SetFilter();
_btnSearch.Width = 20;
_btnSearch.Height = 20;
_btnSearch.ImageAlign = ImageAlign.AbsMiddle;
_btnSearch.AlternateText = "Search";
//Assign the function that is called when search button is clicked
_btnSearch.Click += new ImageClickEventHandler(_btnSearch_Click);

tc.Controls.Add(_ddlFinder);
tc.Controls.Add(_tbSearch);
tc.Controls.Add(_btnSearch);
tr.Cells.Add(tc);
table.Rows.Add(tr);
_pnlSearchFooter.Controls.Add(table);
e.Row.Cells[e.Row.Cells.Count - 1].Controls.Add(_pnlSearchFooter);

}
}
}
if (e.Row.RowType == DataControlRowType.Header)
{
// If ShowHeader is set to true and
// If Row number has to be shown
if (ShowRowNumber && ShowHeader)
{
e.Row.Cells[0].Text = "Sno";
}
}
else if (e.Row.RowType == DataControlRowType.DataRow)
{
if (ShowRowNumber)
{
//Set the row number in every row
e.Row.Cells[0].Text = (e.Row.RowIndex +
(this.PageSize * this.PageIndex) + 1).ToString();
}
}
}
}

相关阅读
栏目导航
推荐软件