用户自定义控件中放gridview的问题 我在UserControl中放了一个gridview,现在的问题是,我怎么在外部调用这个UserControl控制其中gridview的显示字段,不然每个页面都要放一个gridview太麻烦了.谢谢大家 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 加一个属性 把这个Gridview 露出来,这样就能用UserControl.Gridview访问Gridview了。 public GridView MyGridView { get { return GridView1; } set { GridView1 = value; } }在自定义控件后台代码中写个属性,在使用控件的页面的后台 用户控件ID.MyGridview来访问, 把绑定gridview的数据源设置成public,即可在每个页面访问 OrderDetail.ascx.cs:protected void Page_Load(object sender, EventArgs e) { } private DataSet dsOrderDetail; public DataSet DSOrderDetail { get { return dsOrderDetail; } set { dsOrderDetail = value; } } #region 获取订单清单 public void BindOrderDetail() { GridView1.DataSource = DSOrderDetail; GridView1.DataBind(); } #endregionOrderDetail.ascx:<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrderDetail.ascx.cs" Inherits="Web.Controls.OrderDetail" %><asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" GridLines="Horizontal" OnRowDataBound="GridView1_RowDataBound" ShowFooter="True"> <FooterStyle HorizontalAlign="Right" /> <Columns> <asp:HyperLinkField DataNavigateUrlFields="ProductID" DataNavigateUrlFormatString="~/ShowProductDetail.aspx?ProductID={0}" DataTextField="ProductName" HeaderText="商品名称" NavigateUrl="~/ShowProductDetail.aspx" Target="productinfo"> <HeaderStyle HorizontalAlign="Center" /> </asp:HyperLinkField> <asp:BoundField DataField="OriginalPrice" DataFormatString="{0:c}" HeaderText="原价" HtmlEncode="False"> <HeaderStyle HorizontalAlign="Center" /> </asp:BoundField> <asp:BoundField DataField="SellPrice" DataFormatString="{0:c}" HeaderText="售价" HtmlEncode="False"> <HeaderStyle HorizontalAlign="Center" /> </asp:BoundField> <asp:TemplateField HeaderText="数量"> <ItemTemplate> <asp:Label ID="lblQuantity" runat="server" Text='<%#Eval("Quantity") %>'></asp:Label> </ItemTemplate> <FooterTemplate> <span class="msg"> 总数量:<asp:Label ID="lblSumQuantity" runat="server" Text="0"></asp:Label> 总价格:<asp:Label ID="lblSumProductPrice" runat="server" Text="0.00"></asp:Label></span> </FooterTemplate> <ItemStyle HorizontalAlign="Center" /> </asp:TemplateField> <asp:BoundField DataField="TotalSellPrice" HeaderText="总售价" HtmlEncode="False"> <HeaderStyle HorizontalAlign="Center" /> </asp:BoundField> </Columns></asp:GridView> 这个问题最起码要考虑“在外部调用这个UserControl控制其中gridview的显示字段”这个问题的初衷是什么。最起码要想清楚这样做了之后要怎样设计才能达到最终目的。如果每一个页面放自己做出的ascx反倒比每一个放一个gridview还麻烦,足可以证明这个ascx最初的设计太想当然了。 不妨先抛开ascx,说清楚当你每一个页面上都放置一个GridView之后,你是如何“控制其中gridview的显示字段”的,然后也就知道当把所做出的ascx来替换gridview之后,你的那种在每一个页面上看都很自由的“控制显示字段”此时是否还能继续施展。另外,不要太技术化,原来已经写好的页面不要轻易去修改,只有新的页面才一开始就用你的这个ascx。 地图 有谁还在坚守岗位?帮我看看这个flexigrid 排序为什么单击表头无法排序呢? js中导航链接新窗口打开问题?? httpwatch 在IE 中无法显示 求一生成图片缩略图的代码,谢谢拉急用,在线等 MultiPage中的TextBox怎样使用 关于图片查看(DataList) .net的COM组件问题 请高手和大哥帮我一个忙~~~~~~~~~! 关于datagrid的排版问题? Application 对象存储的数据和静态变量存储的数据哪个生命周期比较长? 在客户端用JS建立XML文件
{
get { return GridView1; }
set { GridView1 = value; }
}
在自定义控件后台代码中写个属性,在使用控件的页面的后台 用户控件ID.MyGridview来访问,
protected void Page_Load(object sender, EventArgs e)
{
} private DataSet dsOrderDetail;
public DataSet DSOrderDetail
{
get { return dsOrderDetail; }
set { dsOrderDetail = value; }
} #region 获取订单清单
public void BindOrderDetail()
{
GridView1.DataSource = DSOrderDetail;
GridView1.DataBind();
}
#endregionOrderDetail.ascx:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrderDetail.ascx.cs"
Inherits="Web.Controls.OrderDetail" %>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" GridLines="Horizontal"
OnRowDataBound="GridView1_RowDataBound" ShowFooter="True">
<FooterStyle HorizontalAlign="Right" />
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="ProductID" DataNavigateUrlFormatString="~/ShowProductDetail.aspx?ProductID={0}"
DataTextField="ProductName" HeaderText="商品名称" NavigateUrl="~/ShowProductDetail.aspx"
Target="productinfo">
<HeaderStyle HorizontalAlign="Center" />
</asp:HyperLinkField>
<asp:BoundField DataField="OriginalPrice" DataFormatString="{0:c}" HeaderText="原价"
HtmlEncode="False">
<HeaderStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="SellPrice" DataFormatString="{0:c}" HeaderText="售价" HtmlEncode="False">
<HeaderStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:TemplateField HeaderText="数量">
<ItemTemplate>
<asp:Label ID="lblQuantity" runat="server" Text='<%#Eval("Quantity") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<span class="msg">
总数量:<asp:Label ID="lblSumQuantity" runat="server" Text="0"></asp:Label> 总价格:<asp:Label
ID="lblSumProductPrice" runat="server" Text="0.00"></asp:Label></span>
</FooterTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:BoundField DataField="TotalSellPrice" HeaderText="总售价" HtmlEncode="False">
<HeaderStyle HorizontalAlign="Center" />
</asp:BoundField>
</Columns>
</asp:GridView>