如何在asp.net中为gridview创建自定义Web服务器控件

时间:2010-08-05 16:28:42

标签: c# custom-server-controls

Visual Studio 2008 
.Net 3.5 
C#

我的网站有很多网页浏览网页。我希望能够在某些网格视图上添加“导出到Excel”按钮,因此我开始查找并找到自定义Web服务器控件 - 请参阅this page以获取示例。

这个自定义标签示例允许您将字符串参数作为输入传递给自定义控件:

<aspSample:WelcomeLabel ID="WelcomeLabel1" 
   runat="server" Text="Welcome" DefaultUserName="Guest">
</aspSample:WelcomeLabel>

我不确定如何开始。我在想我创建一个自定义Button控件,其中网格视图的id可以作为参数传入 - 我只是不知道该怎么做,如果它甚至可能。

我认为我不需要创建自定义网格视图控件......或者,我可能通过查看自定义控件使其过于复杂?

请注意: 我编写的代码能够将网格视图导出到Excel文件,并且工作正常。我需要有关如何使代码更通用的帮助,所以我可以通过网格视图将其放在我的ASP中,并让网格视图“可导出”。

提前感谢我指出了正确的方向!

1 个答案:

答案 0 :(得分:1)

如果我们选择一个路径,其中所有按钮调用相同的导出方法来决定使用哪个gridview,然后将相应的数据源发送给Excel创建者,该怎么办?不确定它是否会被认为是脏的,但它应该很简单,不涉及自定义控件。

示例:

假设我们将所有按钮命名为这样,所以我们可以提取出他们的父网格视图

<asp:LinkButton ID="PeopleGridView_exportbutton" runat="server" onclick="excel_click" />
<asp:LinkButton ID="ShipmentsGridView_exportbutton" runat="server" onclick="excel_click" />
<asp:LinkButton ID="ProductsGridView_exportbutton" runat="server" onclick="excel_click" />

现在,我们将制作该方法:

protected void uxPrenatalSubmit_Click(object sender, EventArgs e){
  string callerControlID = ((Control)sender).ID;
  string gridveiwID = callerControlID.Replace("_exportbutton", "");
  GridView gv = (GridView) findControl(gridveiwID);
  myCustomExcelCreatorMethod(gv.DataSource); //your method thingie here
}