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

问题描述:

Visual Studio 2008 
.Net 3.5 
C# 

我有一个网站,它有很多带有网格视图的页面。我希望能够在某些网格视图上添加“导出到Excel”按钮,因此我开始查找并找到自定义Web服务器控件 - 有关示例,请参阅this page如何在asp.net中为gridview创建一个自定义web服务器控件

自定义标签的这个例子可以让你在字符串参数传递作为输入自定义的控制:

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

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

我不认为我需要创建自定义网格视图控件...或者,也许我通过查看自定义控件使它太复杂?

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

在此先感谢您指点我正确的方向!

如果我们采用所有按钮调用相同的导出方法以确定要使用哪个gridview并将相应的数据源发送到Excel创建者的路径,该怎么办?不知道它是否会被认为是脏的,但它应该很容易,不涉及自定义控件。

例子:

比方说,我们命名我们所有的按钮这样的事情,所以我们可以提取出他们的父母的GridView现在

<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 
} 
+0

这看起来相当不错,而且比我看到的复杂得多。 感谢您的例子 - 这将有很大的帮助! – BrianH 2010-08-05 16:58:17

+0

我只是调整和测试了这一点,它工作得很好 - 不知道为什么我追求自定义控件...这是一个更简单的方法来做到这一点。再次感谢! – BrianH 2010-08-05 17:17:12